Index: third_party/ffmpeg/patched-ffmpeg-mt/mt-work/todo.txt |
=================================================================== |
--- third_party/ffmpeg/patched-ffmpeg-mt/mt-work/todo.txt (revision 0) |
+++ third_party/ffmpeg/patched-ffmpeg-mt/mt-work/todo.txt (revision 0) |
@@ -0,0 +1,83 @@ |
+Todo |
+ |
+-- Bug fixes |
+ |
+Prove correct: |
+- decode_update_progress() in h264.c |
+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. |
+- MPV_lowest_referenced_row() and co in mpegvideo.c |
+ |
+mpeg4: |
+- Packed B-frames need to be explicitly split up |
+when frame threading is on. ATM frame threading |
+is disabled for this codec, since it showed major |
+decoding problems in mplayer (but not ffplay for |
+some reason). This is probably the reason. |
+- Support interlaced. |
+ |
+other: |
+- frame_thread_free has memory leaks when called |
+from error label in frame_thread_init. |
+- ffmpeg with -vsync != 0 breaks A/V sync because |
+it can't handle more than 1 frame of decoder delay. |
+This can be seen with H.264 on mainline. |
+- Error resilience has to run before ff_report_ |
+frame_progress() is called. |
+- 'make test' must pass. This means pthread emulation |
+must work the same way without --enable-pthreads. |
+There also seems to be some problem related to |
+draw_edges and the mpeg4 encoder. |
+- There is a harmless warning about unreleased |
+buffers emitted after mpeg* decoding, caused |
+by it calling avcodec_default_free_buffers too early. |
+ |
+-- Optimization |
+ |
+- avail_motion() in h264 spends too much time |
+skipping zeros in refs[]. |
+- fill_edges() is disabled for h264 PAFF+MT |
+because it writes into the other field's |
+thread's pixels. |
+- Support frame+slice threading. |
+- Use a context array for thread_opaque instead |
+of mallocing every time. |
+ |
+-- Style |
+ |
+- See if AVCodec init_copy and update_context |
+can be merged. |
+- Get rid of the IS_* macros in thread.h and |
+use explicit checks instead. |
+- Rename avail_motion and ONLY_IF_THREADS_ENABLED |
+to something better. |
+- Try merging avail_motion() and hl_motion() code. |
+- Document that FF_THREAD_FRAME doesn't work if |
+clients expect certain DTS (like mplayer without |
+-correct-pts), or if they can't submit future frames |
+(like quicktime). |
+ |
+-- Features |
+ |
+- Support streams with width/height changing. This |
+requires flushing all current frames (and buffering |
+the input in the meantime), closing the codec and |
+reopening it. Or don't support it. |
+- Support encoding. Might need more threading primitives |
+for good ratecontrol; would be nice for audio too. |
+- Add an API for clients that waits until a given |
+AVFrame is finished decoding. May not be useful. |
+- After merging to mainline, deprecate avcodec_thread_init |
+and just set thread_count. |
+- Maybe make thread_count == 0 mean automatic. |
+ |
+-- Samples |
+ |
+http://astrange.ithinksw.net/ffmpeg/mt-samples/ |
+ |
+See yuvcmp.c in this directory to compare decoded samples. |
+Try commenting out ff_report_frame_setup_done calls so |
+only one thread runs at once, and then binary search+ |
+scattering printfs to look for differences in codec contexts. |