aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/mpegvideo.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-05-21 03:11:50 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-05-21 03:11:50 +0200
commit0424e052f83adc422d8a746e3cdc5ab6bc28679e (patch)
tree80437095d9912fb844ec2773afe862d54f08c80d /libavcodec/mpegvideo.c
parent5c08c7b2151409c3b7a05e54fe46834deedff119 (diff)
downloadffmpeg-0424e052f83adc422d8a746e3cdc5ab6bc28679e.tar.gz
Merge remote-tracking branch 'ffmpeg-mt/master'
* ffmpeg-mt/master: Update todo. h264: add an assert that copied pictures are valid picture pointers valgrind-check: run with 1 and 3 threads h264: When decoding a packet with multiple PPS/SPS, don't start the next thread until all of them have been read Allow some pictures to be released earlier after 51ead6d2c40c5defdd211f435aec49b19f5f6a18 h264: fix slice threading MC reading uninitialized frame edges. Please see ffmpeg-mt for a list of authors of these changes. Conflicts: libavcodec/h264.c mt-work/valgrind-check.sh Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/mpegvideo.c')
-rw-r--r--libavcodec/mpegvideo.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 6bb35f9f39..0a0a11ebc9 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -316,7 +316,7 @@ int ff_alloc_picture(MpegEncContext *s, Picture *pic, int shared){
s->prev_pict_types[0]= s->dropable ? AV_PICTURE_TYPE_B : s->pict_type;
if(pic->age < PREV_PICT_TYPES_BUFFER_SIZE && s->prev_pict_types[pic->age] == AV_PICTURE_TYPE_B)
pic->age= INT_MAX; // Skipped MBs in B-frames are quite rare in MPEG-1/2 and it is a bit tricky to skip them anyway.
- pic->owner2 = s;
+ pic->owner2 = NULL;
return 0;
fail: //for the FF_ALLOCZ_OR_GOTO macro
@@ -955,7 +955,7 @@ void ff_release_unused_pictures(MpegEncContext *s, int remove_current)
/* release non reference frames */
for(i=0; i<s->picture_count; i++){
if(s->picture[i].data[0] && !s->picture[i].reference
- && s->picture[i].owner2 == s
+ && (!s->picture[i].owner2 || s->picture[i].owner2 == s)
&& (remove_current || &s->picture[i] != s->current_picture_ptr)
/*&& s->picture[i].type!=FF_BUFFER_TYPE_SHARED*/){
free_frame_buffer(s, &s->picture[i]);