mirror of https://github.com/FFmpeg/FFmpeg.git
It is all dead and rotting code. Also, move yuvcmp.c to tools. Its license is non-existent, however, and should be clarified. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>pull/28/head
parent
374c17c8fc
commit
5a627c14b5
7 changed files with 0 additions and 142 deletions
@ -1,6 +0,0 @@ |
|||||||
#!/bin/sh -v |
|
||||||
|
|
||||||
# args [where to put patches] [smtp server] [destination] |
|
||||||
|
|
||||||
git format-patch -o "$1" --inline --subject-prefix=soc --thread origin |
|
||||||
git send-email --no-chain-reply-to --smtp-server $2 --to $3 --dry-run "$1" |
|
@ -1,13 +0,0 @@ |
|||||||
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
|
|
||||||
index 7c68a20..135e6b1 100644
|
|
||||||
--- a/libmpcodecs/vd_ffmpeg.c
|
|
||||||
+++ b/libmpcodecs/vd_ffmpeg.c
|
|
||||||
@@ -280,7 +280,7 @@ static int init(sh_video_t *sh){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if(vd_use_slices && (lavc_codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND) && !do_vis_debug)
|
|
||||||
+ if(vd_use_slices && (lavc_codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND) && !do_vis_debug && lavc_param_threads <= 1)
|
|
||||||
ctx->do_slices=1;
|
|
||||||
|
|
||||||
if(lavc_codec->capabilities&CODEC_CAP_DR1 && !do_vis_debug && lavc_codec->id != AV_CODEC_ID_H264 && lavc_codec->id != AV_CODEC_ID_INTERPLAY_VIDEO && lavc_codec->id != AV_CODEC_ID_ROQ && lavc_codec->id != AV_CODEC_ID_VP8 && lavc_codec->id != AV_CODEC_ID_LAGARITH)
|
|
@ -1,10 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
fn=`basename "$1"` |
|
||||||
for th in 1 4; do |
|
||||||
time ./ffmpeg_g -threads $th -skip_loop_filter all -vsync 0 -y -t 30 -i "$1" -an -f rawvideo "raw/n-$fn-$th.yuv" |
|
||||||
done |
|
||||||
|
|
||||||
#for th in 1 4; do |
|
||||||
# time ./ffmpeg_g -threads $th -vsync 0 -y -t 30 -i "$1" -an -f rawvideo "raw/$fn-$th.yuv" |
|
||||||
#done |
|
@ -1,13 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
fn=`basename "$1"` |
|
||||||
for th in 1 2 3 4; do |
|
||||||
time ./ffmpeg_g -threads $th -flags2 +fast -vsync 0 -y -t 30 -i "$1" -an -f framecrc "crc/$fn-$th.txt" >/dev/null 2>&1 |
|
||||||
done |
|
||||||
|
|
||||||
./ffmpeg_g -threads 1 -y -t 10 -i "$1" -an -f framecrc "crc/$fn-1-vsync.txt" >/dev/null 2>&1 |
|
||||||
./ffmpeg_g -threads 3 -y -t 10 -i "$1" -an -f framecrc "crc/$fn-3-vsync.txt" >/dev/null 2>&1 |
|
||||||
|
|
||||||
md5 "crc/$fn-"[1234].txt |
|
||||||
echo |
|
||||||
md5 "crc/$fn-"*vsync.txt |
|
@ -1,95 +0,0 @@ |
|||||||
Todo |
|
||||||
|
|
||||||
-- For other people |
|
||||||
- Multithread vc1. |
|
||||||
- Multithread an intra codec like mjpeg (trivial). |
|
||||||
- Fix mpeg1 (see below). |
|
||||||
- Try the first three items under Optimization. |
|
||||||
- Fix h264 (see below). |
|
||||||
- Try mpeg4 (see below). |
|
||||||
|
|
||||||
-- Bug fixes |
|
||||||
|
|
||||||
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 that aren't parsed (e.g. mp4) and contain PAFF with two |
|
||||||
field pictures in the same packet are not optimal. Modify the |
|
||||||
nals_needed check so that the second field's first slice is |
|
||||||
considered as needed, then uncomment the FIXME code in decode_postinit. |
|
||||||
Ex: http://astrange.ithinksw.net/ffmpeg/mt-samples/PAFF-Chalet-Tire.mp4 |
|
||||||
|
|
||||||
mpeg4: |
|
||||||
- Packed B-frames need to be explicitly split up |
|
||||||
when frame threading is on. It's not very fast |
|
||||||
without this. |
|
||||||
- The buffer age optimization is disabled due to |
|
||||||
the way buffers are allocated across threads. The |
|
||||||
branch 'fix_buffer_age' has an attempt to fix it |
|
||||||
which breaks ffplay. |
|
||||||
- Support interlaced. |
|
||||||
|
|
||||||
mpeg1/2: |
|
||||||
- Seeking always prints "first frame not a keyframe" |
|
||||||
with threads on. Currently disabled for this reason. |
|
||||||
|
|
||||||
-- Prove correct |
|
||||||
|
|
||||||
- decode_update_progress() in h264.c |
|
||||||
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 |
|
||||||
- Same in vp3. |
|
||||||
|
|
||||||
-- 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. 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++" |
|
||||||
loop in h264.c await_references(), try turning the list0/list1 check |
|
||||||
above into a loop without being slower. |
|
||||||
- Support frame+slice threading at the same time |
|
||||||
by assigning slice_count threads for frame threads |
|
||||||
to use with execute(). This is simpler but unbalanced |
|
||||||
if only one frame thread uses any. |
|
||||||
|
|
||||||
-- 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 and libavfilter too. |
|
||||||
- Async decoding part 1: instead of trying to |
|
||||||
start every thread at the beginning, return a picture |
|
||||||
if the earliest thread is already done, but don't wait |
|
||||||
for it. Not sure what effect this would have. |
|
||||||
- Part 2: have an API that doesn't wait for the decoding |
|
||||||
thread, only returns EAGAIN if it's not ready. What will |
|
||||||
it do with the next input packet if it returns that? |
|
||||||
- Have an API that returns finished pictures but doesn't |
|
||||||
require sending new ones. Maybe allow NULL avpkt when |
|
||||||
not at the end of the stream. |
|
||||||
|
|
||||||
-- Samples |
|
||||||
|
|
||||||
http://astrange.ithinksw.net/ffmpeg/mt-samples/ |
|
||||||
|
|
||||||
See yuvcmp.c in this directory to compare decoded samples. |
|
||||||
|
|
||||||
For debugging, try commenting out ff_thread_finish_setup calls so |
|
||||||
that only one thread runs at once, and then binary search+ |
|
||||||
scatter printfs to look for differences in codec contexts. |
|
@ -1,5 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
valgrind --track-origins=yes --leak-check=full ./ffmpeg_g -threads 1 -vsync 0 -y -t 30 -i "$1" -an -f null /dev/null |
|
||||||
|
|
||||||
valgrind --track-origins=yes --leak-check=full ./ffmpeg_g -threads 3 -vsync 0 -y -t 30 -i "$1" -an -f null /dev/null |
|
Loading…
Reference in new issue