[FFmpeg-soc] [soc]: r3757 - libavfilter/diffs/01_ffplay_filters.diff

stefano subversion at mplayerhq.hu
Thu Oct 2 22:48:41 CEST 2008


Author: stefano
Date: Thu Oct  2 22:48:41 2008
New Revision: 3757

Log:
Fix a crash when using the rawvideo decoder in ffplay.

The rawvideo decoder uses the packet data to set the data in the
output AVFrame, so when the packet containing the data was released in
get_video_frame(), then the AVFrame data was released as well, and
when accessed caused a crash.


Modified:
   libavfilter/diffs/01_ffplay_filters.diff

Modified: libavfilter/diffs/01_ffplay_filters.diff
==============================================================================
--- libavfilter/diffs/01_ffplay_filters.diff	(original)
+++ libavfilter/diffs/01_ffplay_filters.diff	Thu Oct  2 22:48:41 2008
@@ -210,7 +210,7 @@ Index: ffplay.c
          /* update the bitmap content */
          SDL_UnlockYUVOverlay(vp->bmp);
  
-@@ -1332,54 +1403,253 @@
+@@ -1332,54 +1403,256 @@
      return queue_picture(is, src_frame, pts);
  }
  
@@ -247,7 +247,10 @@ Index: ffplay.c
 +        /* put pts into units of 1/AV_TIME_BASE */
 +    *pts = AV_TIME_BASE * (*pts) * is->video_st->time_base.num /
 +        is->video_st->time_base.den;
-+    av_free_packet(pkt);
++
++    /* rawvideo decoder uses the packet data to set the data in the output AVFrame */
++    if (is->video_st->codec->codec->id != CODEC_ID_RAWVIDEO)
++      av_free_packet(pkt);
 +    if(got_picture)
 +        return 1;
 +    return 0;
@@ -495,7 +498,7 @@ Index: ffplay.c
      av_free(frame);
      return 0;
  }
-@@ -2156,6 +2426,12 @@
+@@ -2156,6 +2429,12 @@
      /* free all pictures */
      for(i=0;i<VIDEO_PICTURE_QUEUE_SIZE; i++) {
          vp = &is->pictq[i];
@@ -508,7 +511,7 @@ Index: ffplay.c
          if (vp->bmp) {
              SDL_FreeYUVOverlay(vp->bmp);
              vp->bmp = NULL;
-@@ -2493,6 +2769,9 @@
+@@ -2493,6 +2772,9 @@
      { "ec", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&error_concealment}, "set error concealment options",  "bit_mask" },
      { "sync", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_sync}, "set audio-video sync. type (type=audio/video/ext)", "type" },
      { "threads", HAS_ARG | OPT_FUNC2 | OPT_EXPERT, {(void*)opt_thread_count}, "thread count", "count" },



More information about the FFmpeg-soc mailing list