On 17/12/2018 18:45, ggeng wrote:
> Hi,
> 
> I am using libav to decode a video (following the demo code available
> online), and I am trying to pre-allocate memory that the decoded frame data
> will be written to. Ultimately, I would like to have pFrame->data[0] to be
> in a region of memory I pre-allocate.
> 
> Following examples online, I am able to set pFrame->data as so:
> 
> *// Determine required buffer size and allocate buffer*
> int numBytes;
> numBytes = av_image_get_buffer_size(pixFmt, width, height, 1);
> (uint8_t*) dataBuff = (uint8_t*) malloc (numBytes * sizeof(uint8_t));
> 
> *// Assign buffer to image planes in pFrame*
> av_image_fill_arrays(frame->data, frame->linesize, dataBuff, pixFmt, width,
> height, 1);
> 
> However, I found that this call:
> 
> ret = avcodec_receive_frame(pCodecContext, pFrame)
> 
> will always write the decoded frame data to be somewhere else, and allocate
> its own memory for pFrame->data, completely ignoring the dataBuffer I set to
> pFrame->data before.
> 
> Is there a way to get around this? Either by decoding video without a call
> to avcodec_receive_frame or a way to set the memory for the data?

Have a look at the AVCodecContext.get_buffer2 callback.

- Mark
_______________________________________________
Libav-user mailing list
Libav-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/libav-user

To unsubscribe, visit link above, or email
libav-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to