]> git.sesse.net Git - ffmpeg/blobdiff - doc/examples/qsvdec.c
Merge commit '6c445990e64124ad64c79423dfd3764520648c89'
[ffmpeg] / doc / examples / qsvdec.c
index 2f26f41ebdaba8f4dbbffcaa4e9781fa118e8f64..aaecd81d4ca524e3e58dea7d7088a01554be973a 100644 (file)
@@ -352,7 +352,7 @@ int main(int argc, char **argv)
     for (i = 0; i < input_ctx->nb_streams; i++) {
         AVStream *st = input_ctx->streams[i];
 
-        if (st->codec->codec_id == AV_CODEC_ID_H264 && !video_st)
+        if (st->codecpar->codec_id == AV_CODEC_ID_H264 && !video_st)
             video_st = st;
         else
             st->discard = AVDISCARD_ALL;
@@ -404,16 +404,16 @@ int main(int argc, char **argv)
         goto finish;
     }
     decoder_ctx->codec_id = AV_CODEC_ID_H264;
-    if (video_st->codec->extradata_size) {
-        decoder_ctx->extradata = av_mallocz(video_st->codec->extradata_size +
+    if (video_st->codecpar->extradata_size) {
+        decoder_ctx->extradata = av_mallocz(video_st->codecpar->extradata_size +
                                             AV_INPUT_BUFFER_PADDING_SIZE);
         if (!decoder_ctx->extradata) {
             ret = AVERROR(ENOMEM);
             goto finish;
         }
-        memcpy(decoder_ctx->extradata, video_st->codec->extradata,
-               video_st->codec->extradata_size);
-        decoder_ctx->extradata_size = video_st->codec->extradata_size;
+        memcpy(decoder_ctx->extradata, video_st->codecpar->extradata,
+               video_st->codecpar->extradata_size);
+        decoder_ctx->extradata_size = video_st->codecpar->extradata_size;
     }
     decoder_ctx->refcounted_frames = 1;
 
@@ -468,6 +468,10 @@ finish:
 
     av_frame_free(&frame);
 
+    if (decoder_ctx)
+        av_freep(&decoder_ctx->hwaccel_context);
+    avcodec_free_context(&decoder_ctx);
+
     free_surfaces(&decode);
 
     if (decode.mfx_session)
@@ -477,10 +481,6 @@ finish:
     if (dpy)
         XCloseDisplay(dpy);
 
-    if (decoder_ctx)
-        av_freep(&decoder_ctx->hwaccel_context);
-    avcodec_free_context(&decoder_ctx);
-
     avio_close(output_ctx);
 
     return ret;