diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-03-27 01:40:18 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-03-27 01:40:18 +0100 |
commit | 3c8493074bc43aced247a34d6b981e6f9acde0f1 (patch) | |
tree | 99b7984ed8e49d397c4cb3dab184454e26e122f1 | |
parent | b0efaee6c1a07b4e7575bf523542ce846202b6e2 (diff) | |
parent | 1500be13f204acb7e74dac4325ef0052576fa2a9 (diff) | |
download | ffmpeg-3c8493074bc43aced247a34d6b981e6f9acde0f1.tar.gz |
Merge remote-tracking branch 'newdev/master'
* newdev/master:
dsputil: allow to skip drawing of top/bottom edges.
Split fate-psx-str-v3 into a video-only and audio-only test.
Conflicts:
libavcodec/dsputil.c
libavcodec/mpegvideo.c
libavcodec/snow.c
libavcodec/x86/dsputil_mmx.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/dsputil.c | 26 | ||||
-rw-r--r-- | libavcodec/mpegvideo.c | 6 | ||||
-rw-r--r-- | libavcodec/x86/dsputil_mmx.c | 10 | ||||
-rw-r--r-- | tests/fate.mak | 6 | ||||
-rw-r--r-- | tests/ref/fate/psx-str-v3-adpcm_xa | 37 | ||||
-rw-r--r-- | tests/ref/fate/psx-str-v3-mdec (renamed from tests/ref/fate/psx-str-v3) | 37 |
6 files changed, 59 insertions, 63 deletions
diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c index 951236c8c3..036f9f7bf4 100644 --- a/libavcodec/dsputil.c +++ b/libavcodec/dsputil.c @@ -303,12 +303,6 @@ static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w, i uint8_t *ptr, *last_line; int i; - last_line = buf + (height - 1) * wrap; - for(i=0;i<w;i++) { - /* top and bottom */ - if (sides&EDGE_TOP) memcpy(buf - (i + 1) * wrap, buf, width); - if (sides&EDGE_BOTTOM) memcpy(last_line + (i + 1) * wrap, last_line, width); - } /* left and right */ ptr = buf; for(i=0;i<height;i++) { @@ -316,18 +310,16 @@ static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w, i memset(ptr + width, ptr[width-1], w); ptr += wrap; } - /* corners */ - for(i=0;i<w;i++) { - if (sides&EDGE_TOP) { - memset(buf - (i + 1) * wrap - w, buf[0], w); /* top left */ - memset(buf - (i + 1) * wrap + width, buf[width-1], w); /* top right */ - } - if (sides&EDGE_BOTTOM) { - memset(last_line + (i + 1) * wrap - w, last_line[0], w); /* top left */ - memset(last_line + (i + 1) * wrap + width, last_line[width-1], w); /* top right */ - } - } + /* top and bottom + corners */ + buf -= w; + last_line = buf + (height - 1) * wrap; + if (sides & EDGE_TOP) + for(i = 0; i < w; i++) + memcpy(buf - (i + 1) * wrap, buf, width + w + w); // top + if (sides & EDGE_BOTTOM) + for (i = 0; i < w; i++) + memcpy(last_line + (i + 1) * wrap, last_line, width + w + w); // bottom } /** diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index aa5378b542..dd003b48c3 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1165,9 +1165,9 @@ void MPV_frame_end(MpegEncContext *s) && !(s->flags&CODEC_FLAG_EMU_EDGE)) { int edges = EDGE_BOTTOM | EDGE_TOP, h = s->v_edge_pos; - s->dsp.draw_edges(s->current_picture_ptr->data[0], s->linesize , s->h_edge_pos , h , EDGE_WIDTH , edges); - s->dsp.draw_edges(s->current_picture_ptr->data[1], s->uvlinesize, s->h_edge_pos>>1, h>>1, EDGE_WIDTH/2, edges); - s->dsp.draw_edges(s->current_picture_ptr->data[2], s->uvlinesize, s->h_edge_pos>>1, h>>1, EDGE_WIDTH/2, edges); + s->dsp.draw_edges(s->current_picture.data[0], s->linesize , s->h_edge_pos , h , EDGE_WIDTH , edges); + s->dsp.draw_edges(s->current_picture.data[1], s->uvlinesize, s->h_edge_pos>>1, h>>1, EDGE_WIDTH/2, edges); + s->dsp.draw_edges(s->current_picture.data[2], s->uvlinesize, s->h_edge_pos>>1, h>>1, EDGE_WIDTH/2, edges); } diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c index c163a16848..d06ad6309d 100644 --- a/libavcodec/x86/dsputil_mmx.c +++ b/libavcodec/x86/dsputil_mmx.c @@ -836,9 +836,9 @@ static void draw_edges_mmx(uint8_t *buf, int wrap, int width, int height, int w, ); } - for(i=0;i<w;i+=4) { - /* top and bottom (and hopefully also the corners) */ - if (sides&EDGE_TOP) { + /* top and bottom (and hopefully also the corners) */ + if (sides&EDGE_TOP) { + for(i = 0; i < w; i += 4) { ptr= buf - (i + 1) * wrap - w; __asm__ volatile( "1: \n\t" @@ -854,8 +854,10 @@ static void draw_edges_mmx(uint8_t *buf, int wrap, int width, int height, int w, : "r" ((x86_reg)buf - (x86_reg)ptr - w), "r" ((x86_reg)-wrap), "r" ((x86_reg)-wrap*3), "r" (ptr+width+2*w) ); } + } - if (sides&EDGE_BOTTOM) { + if (sides&EDGE_BOTTOM) { + for(i = 0; i < w; i += 4) { ptr= last_line + (i + 1) * wrap - w; __asm__ volatile( "1: \n\t" diff --git a/tests/fate.mak b/tests/fate.mak index 21158fc13c..0e3331178b 100644 --- a/tests/fate.mak +++ b/tests/fate.mak @@ -204,8 +204,10 @@ FATE_TESTS += fate-pcm_dvd fate-pcm_dvd: CMD = framecrc -i $(SAMPLES)/pcm-dvd/coolitnow-partial.vob -vn FATE_TESTS += fate-psx-str fate-psx-str: CMD = framecrc -i $(SAMPLES)/psx-str/descent-partial.str -FATE_TESTS += fate-psx-str-v3 -fate-psx-str-v3: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str +FATE_TESTS += fate-psx-str-v3-mdec +fate-psx-str-v3-mdec: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -an +FATE_TESTS += fate-psx-str-v3-adpcm_xa +fate-psx-str-v3-adpcm_xa: CMD = framecrc -i $(SAMPLES)/psx-str/abc000_cut.str -vn FATE_TESTS += fate-ptx fate-ptx: CMD = framecrc -i $(SAMPLES)/ptx/_113kw_pic.ptx -pix_fmt rgb24 FATE_TESTS += fate-pva-demux diff --git a/tests/ref/fate/psx-str-v3-adpcm_xa b/tests/ref/fate/psx-str-v3-adpcm_xa new file mode 100644 index 0000000000..ee0c3543d3 --- /dev/null +++ b/tests/ref/fate/psx-str-v3-adpcm_xa @@ -0,0 +1,37 @@ +0, 0, 8064, 0xa307ed8c +0, 4800, 8064, 0xd2551927 +0, 9600, 8064, 0x3264a799 +0, 14400, 8064, 0x75da1393 +0, 19200, 8064, 0x68665f59 +0, 24000, 8064, 0xaf266a18 +0, 28800, 8064, 0x4d4b69fd +0, 33600, 8064, 0x129d7e17 +0, 38400, 8064, 0x78c56725 +0, 43200, 8064, 0x59902cf1 +0, 48000, 8064, 0x6e699c87 +0, 52800, 8064, 0xc30692d7 +0, 57600, 8064, 0x29c043e5 +0, 62400, 8064, 0x61907704 +0, 67200, 8064, 0xf9210630 +0, 72000, 8064, 0xc0bdda08 +0, 76800, 8064, 0x6171b96d +0, 81600, 8064, 0x082947cf +0, 86400, 8064, 0xf7bbf1ce +0, 91200, 8064, 0xe50e4436 +0, 96000, 8064, 0x2a860844 +0, 100800, 8064, 0xedcb502c +0, 105600, 8064, 0x448e3c7f +0, 110400, 8064, 0xf782f366 +0, 115200, 8064, 0xf57f66a5 +0, 120000, 8064, 0xdcc36939 +0, 124800, 8064, 0x34959d99 +0, 129600, 8064, 0xa5c20433 +0, 134400, 8064, 0xf1364e9b +0, 139200, 8064, 0x232fe9c7 +0, 144000, 8064, 0xdc068d5a +0, 148800, 8064, 0x4962e812 +0, 153600, 8064, 0x36a6709b +0, 158400, 8064, 0xa2837bd8 +0, 163200, 8064, 0x68612ddb +0, 168000, 8064, 0x8d76d1cb +0, 172800, 8064, 0x7707cfc7 diff --git a/tests/ref/fate/psx-str-v3 b/tests/ref/fate/psx-str-v3-mdec index 3ea065b212..52a3835d2a 100644 --- a/tests/ref/fate/psx-str-v3 +++ b/tests/ref/fate/psx-str-v3-mdec @@ -1,69 +1,32 @@ 0, 0, 76800, 0x2677be82 -1, 0, 8064, 0xa307ed8c -1, 4800, 8064, 0xd2551927 0, 6000, 76800, 0x1f323c75 -1, 9600, 8064, 0x3264a799 0, 12000, 76800, 0xc8be3be9 -1, 14400, 8064, 0x75da1393 0, 18000, 76800, 0x1f323c75 -1, 19200, 8064, 0x68665f59 0, 24000, 76800, 0x7e484488 -1, 24000, 8064, 0xaf266a18 -1, 28800, 8064, 0x4d4b69fd 0, 30000, 76800, 0x8bd644aa -1, 33600, 8064, 0x129d7e17 0, 36000, 76800, 0xaa62e7b8 -1, 38400, 8064, 0x78c56725 0, 42000, 76800, 0xaa62e7b8 -1, 43200, 8064, 0x59902cf1 0, 48000, 76800, 0x53fadb39 -1, 48000, 8064, 0x6e699c87 -1, 52800, 8064, 0xc30692d7 0, 54000, 76800, 0x53fadb39 -1, 57600, 8064, 0x29c043e5 0, 60000, 76800, 0x1ff9d964 -1, 62400, 8064, 0x61907704 0, 66000, 76800, 0x1ff9d964 -1, 67200, 8064, 0xf9210630 0, 72000, 76800, 0xd8c8d947 -1, 72000, 8064, 0xc0bdda08 -1, 76800, 8064, 0x6171b96d 0, 78000, 76800, 0xd8c8d947 -1, 81600, 8064, 0x082947cf 0, 84000, 76800, 0x6d0bd94c -1, 86400, 8064, 0xf7bbf1ce 0, 90000, 76800, 0x6d0bd94c -1, 91200, 8064, 0xe50e4436 0, 96000, 76800, 0x7e66d948 -1, 96000, 8064, 0x2a860844 -1, 100800, 8064, 0xedcb502c 0, 102000, 76800, 0x7e66d948 -1, 105600, 8064, 0x448e3c7f 0, 108000, 76800, 0x8eecfd72 -1, 110400, 8064, 0xf782f366 0, 114000, 76800, 0xb15f29ab -1, 115200, 8064, 0xf57f66a5 0, 120000, 76800, 0x08e5502e -1, 120000, 8064, 0xdcc36939 -1, 124800, 8064, 0x34959d99 0, 126000, 76800, 0xaa58796d -1, 129600, 8064, 0xa5c20433 0, 132000, 76800, 0xe254a27c -1, 134400, 8064, 0xf1364e9b 0, 138000, 76800, 0xeec8cf68 -1, 139200, 8064, 0x232fe9c7 0, 144000, 76800, 0x812bf8ee -1, 144000, 8064, 0xdc068d5a -1, 148800, 8064, 0x4962e812 0, 150000, 76800, 0x929922ef -1, 153600, 8064, 0x36a6709b 0, 156000, 76800, 0xe1174e06 -1, 158400, 8064, 0xa2837bd8 0, 162000, 76800, 0x2da77bf1 -1, 163200, 8064, 0x68612ddb 0, 168000, 76800, 0xd0f6a727 -1, 168000, 8064, 0x8d76d1cb -1, 172800, 8064, 0x7707cfc7 0, 174000, 76800, 0x31bfd168 0, 180000, 76800, 0xb87af225 0, 186000, 76800, 0xd0080859 |