what is 'linesize alignment' meaning?

后端 未结 3 1299
挽巷
挽巷 2021-02-05 07:35

I\'m following ffmpeg tutorial in http://dranger.com/ffmpeg/tutorial01.html.

I have just found that avpicture_get_size function is deprecated.

So I

3条回答
  •  再見小時候
    2021-02-05 08:19

    My practice:

    1.avpicture deprecated problem, I replace avpicture functions with AVFrame & imgutils functions. code sample:

       //AVPicture           _picture;
       AVFrame             *_pictureFrame;
       uint8_t             *_pictureFrameData;
    

    ...

    //_pictureValid = avpicture_alloc(&_picture,
    //                                AV_PIX_FMT_RGB24,
    //                               _videoCodecCtx->width,
    //                               _videoCodecCtx->height) == 0;
    
    _pictureFrame = av_frame_alloc();
    _pictureFrame->width = _videoCodecCtx->width;
    _pictureFrame->height = _videoCodecCtx->height;
    _pictureFrame->format = AV_PIX_FMT_RGB24;
    
    int size = av_image_get_buffer_size(_pictureFrame->format,
                                        _pictureFrame->width,
                                        _pictureFrame->height,
                                        1);
    
    //dont forget to free _pictureFrameData at last                                    
    _pictureFrameData = (uint8_t*)av_malloc(size);
    
     av_image_fill_arrays(_pictureFrame->data,
                          _pictureFrame->linesize,
                          _pictureFrameData,
                          _pictureFrame->format,
                          _pictureFrame->width,
                          _pictureFrame->height,
                          1);
    

    ...

    if (_pictureFrame) {
        av_free(_pictureFrame);
        if (_pictureFrameData) {
            free(_pictureFrameData);
        }
    }
    

    2.align parameter

    first I set align to 32, but for some video streams it did not work, cause distorted images. Then I set it to 16(my environment : mac, Xcode, iPhone6), the some streams works well. But at last i set align to 1, for I have found this

    Fill in the AVPicture fields, always assume a linesize alignment of 1. 
    

提交回复
热议问题