OLD | NEW |
1 Todo | 1 Todo |
2 | 2 |
3 -- Bug fixes | 3 -- Bug fixes |
4 | 4 |
5 Prove correct: | 5 Prove correct: |
6 - decode_update_progress() in h264.c | 6 - decode_update_progress() in h264.c |
7 h264_race_checking branch has some work on h264, | 7 h264_race_checking branch has some work on h264, |
8 but not that function. It might be worth putting | 8 but not that function. It might be worth putting |
9 the branch under #ifdef DEBUG in mainline, but | 9 the branch under #ifdef DEBUG in mainline, but |
10 the code would have to be cleaner. | 10 the code would have to be cleaner. |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 -- Optimization | 36 -- Optimization |
37 | 37 |
38 - await_references() in h264 spends too much time | 38 - await_references() in h264 spends too much time |
39 skipping zeros in refs[]. Add a next_array_nonzero | 39 skipping zeros in refs[]. Add a next_array_nonzero |
40 macro or something to use write-combining checks; | 40 macro or something to use write-combining checks; |
41 this would probably be useful somewhere else too. | 41 this would probably be useful somewhere else too. |
42 - fill_edges() is disabled for h264 PAFF+MT | 42 - fill_edges() is disabled for h264 PAFF+MT |
43 because it writes into the other field's | 43 because it writes into the other field's |
44 thread's pixels. | 44 thread's pixels. |
| 45 - Check update_thread_context() functions and make |
| 46 sure they only copy what they need to. (2% cpu is spent |
| 47 in memcpy) |
45 - Support frame+slice threading. | 48 - Support frame+slice threading. |
46 | 49 |
47 -- Style | 50 -- Style |
48 | 51 |
49 - See if AVCodec init_thread_copy and update_thread_context | 52 - See if AVCodec init_thread_copy and update_thread_context |
50 can be merged. | 53 can be merged cleanly. |
51 | 54 |
52 -- Features | 55 -- Features |
53 | 56 |
54 - Support streams with width/height changing. This | 57 - Support streams with width/height changing. This |
55 requires flushing all current frames (and buffering | 58 requires flushing all current frames (and buffering |
56 the input in the meantime), closing the codec and | 59 the input in the meantime), closing the codec and |
57 reopening it. Or don't support it. | 60 reopening it. Or don't support it. |
58 - Support encoding. Might need more threading primitives | 61 - Support encoding. Might need more threading primitives |
59 for good ratecontrol; would be nice for audio too. | 62 for good ratecontrol; would be nice for audio too. |
60 - Add an API for clients that waits until a given | 63 - Add an API for clients that waits until a given |
61 AVFrame is finished decoding. May not be useful. | 64 AVFrame is finished decoding. May not be useful. |
62 - After merging to mainline, deprecate avcodec_thread_init | 65 - After merging to mainline, deprecate avcodec_thread_init |
63 and just set thread_count. | 66 and just set thread_count. |
64 - Maybe make thread_count == 0 mean automatic. | 67 - Maybe make thread_count == 0 mean automatic. |
65 | 68 |
66 -- Samples | 69 -- Samples |
67 | 70 |
68 http://astrange.ithinksw.net/ffmpeg/mt-samples/ | 71 http://astrange.ithinksw.net/ffmpeg/mt-samples/ |
69 | 72 |
70 See yuvcmp.c in this directory to compare decoded samples. | 73 See yuvcmp.c in this directory to compare decoded samples. |
71 Try commenting out ff_thread_finish_setup calls so | 74 Try commenting out ff_thread_finish_setup calls so |
72 only one thread runs at once, and then binary search+ | 75 only one thread runs at once, and then binary search+ |
73 scattering printfs to look for differences in codec contexts. | 76 scattering printfs to look for differences in codec contexts. |
OLD | NEW |