mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2025-10-29 11:42:02 +08:00
ffmpeg: Check that frames are user type before treating them as such
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
5
ffmpeg.c
5
ffmpeg.c
@@ -573,6 +573,9 @@ static void codec_release_buffer(AVCodecContext *s, AVFrame *frame)
|
|||||||
FrameBuffer *buf = frame->opaque;
|
FrameBuffer *buf = frame->opaque;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if(frame->type!=FF_BUFFER_TYPE_USER)
|
||||||
|
return avcodec_default_release_buffer(s, frame);
|
||||||
|
|
||||||
for (i = 0; i < FF_ARRAY_ELEMS(frame->data); i++)
|
for (i = 0; i < FF_ARRAY_ELEMS(frame->data); i++)
|
||||||
frame->data[i] = NULL;
|
frame->data[i] = NULL;
|
||||||
|
|
||||||
@@ -2051,7 +2054,7 @@ static int transcode_video(InputStream *ist, AVPacket *pkt, int *got_output, int
|
|||||||
if (!frame_sample_aspect->num)
|
if (!frame_sample_aspect->num)
|
||||||
*frame_sample_aspect = ist->st->sample_aspect_ratio;
|
*frame_sample_aspect = ist->st->sample_aspect_ratio;
|
||||||
decoded_frame->pts = ist->pts;
|
decoded_frame->pts = ist->pts;
|
||||||
if (ist->dr1) {
|
if (ist->dr1 && decoded_frame->type==FF_BUFFER_TYPE_USER) {
|
||||||
FrameBuffer *buf = decoded_frame->opaque;
|
FrameBuffer *buf = decoded_frame->opaque;
|
||||||
AVFilterBufferRef *fb = avfilter_get_video_buffer_ref_from_arrays(
|
AVFilterBufferRef *fb = avfilter_get_video_buffer_ref_from_arrays(
|
||||||
decoded_frame->data, decoded_frame->linesize,
|
decoded_frame->data, decoded_frame->linesize,
|
||||||
|
|||||||
Reference in New Issue
Block a user