diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c index b28ac26913..ba06641ab0 100644 --- a/libavcodec/mdec.c +++ b/libavcodec/mdec.c @@ -246,7 +246,7 @@ static av_cold int decode_init_thread_copy(AVCodecContext *avctx){ avctx->coded_frame= p; a->avctx= avctx; - p->qscale_table= av_mallocz( p->qstride * a->mb_height); + p->qscale_table= av_mallocz(a->mb_width); return 0; } diff --git a/libavformat/id3v1.c b/libavformat/id3v1.c index 4f9b5840ec..365c3e0fab 100644 --- a/libavformat/id3v1.c +++ b/libavformat/id3v1.c @@ -227,7 +227,7 @@ void ff_id3v1_read(AVFormatContext *s) { int ret; uint8_t buf[ID3v1_TAG_SIZE]; - int64_t filesize, position = url_ftell(s->pb); + int64_t filesize, position = avio_tell(s->pb); if (!url_is_streamed(s->pb)) { /* XXX: change that */ diff --git a/mt-work/todo.txt b/mt-work/todo.txt index a27f181759..013853e3ae 100644 --- a/mt-work/todo.txt +++ b/mt-work/todo.txt @@ -2,7 +2,7 @@ Todo -- For other people - Multithread vp8 or vc1. -- Multithread an intra codec like mjpeg. +- Multithread an intra codec like mjpeg (trivial). - Fix mpeg1 (see below). - Try the first three items under Optimization. - Fix h264 (see below). @@ -14,6 +14,8 @@ General critical: - Error resilience has to run before ff_report_frame_progress() is called. Otherwise there will be race conditions. (This might already work.) In general testing error paths should be done more. +- 'make fate THREADS=2' doesn't pass. Most failures are due to +bugs in vsync in ffmpeg.c, which are currently obscuring real failures. h264: - Files split at the wrong NAL unit don't (and can't) @@ -39,7 +41,7 @@ with threads on. Currently disabled for this reason. -- Prove correct - decode_update_progress() in h264.c -h264_race_checking branch has some work on h264, +race_checking branch has some work on h264, but not that function. It might be worth putting the branch under #ifdef DEBUG in mainline, but the code would have to be cleaner. @@ -48,9 +50,11 @@ the code would have to be cleaner. -- Optimization +- Merge h264 decode_update_progress() with loop_filter(). +Add CODEC_CAP_DRAW_HORIZ_BAND as a side effect. - EMU_EDGE is always set for h264 PAFF+MT because draw_edges() writes into the other field's -thread's pixels. +thread's pixels. Needs an option to skip T/B fields. - Check update_thread_context() functions and make sure they only copy what they need to. - Try some more optimization of the "ref < 48; ref++"