| 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 |