You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-11-23 21:54:53 +02:00
lavc: Edge emulation with dst/src linesize
Allow supporting files for which the image stride is smaller than the maximum block size + number of subpel mc taps, e.g. a 64x64 VP9 file or a 16x16 VP8 file with -fflags +emu_edge.
This commit is contained in:
committed by
Luca Barbato
parent
3cbe112653
commit
458446acfa
@@ -723,12 +723,18 @@ static inline void rv34_mc(RV34DecContext *r, const int block_type,
|
||||
uint8_t *uvbuf = s->edge_emu_buffer + 22 * s->linesize;
|
||||
|
||||
srcY -= 2 + 2*s->linesize;
|
||||
s->vdsp.emulated_edge_mc(s->edge_emu_buffer, srcY, s->linesize, (width<<3)+6, (height<<3)+6,
|
||||
s->vdsp.emulated_edge_mc(s->edge_emu_buffer, srcY,
|
||||
s->linesize, s->linesize,
|
||||
(width << 3) + 6, (height << 3) + 6,
|
||||
src_x - 2, src_y - 2, s->h_edge_pos, s->v_edge_pos);
|
||||
srcY = s->edge_emu_buffer + 2 + 2*s->linesize;
|
||||
s->vdsp.emulated_edge_mc(uvbuf , srcU, s->uvlinesize, (width<<2)+1, (height<<2)+1,
|
||||
s->vdsp.emulated_edge_mc(uvbuf, srcU,
|
||||
s->uvlinesize,s->uvlinesize,
|
||||
(width << 2) + 1, (height << 2) + 1,
|
||||
uvsrc_x, uvsrc_y, s->h_edge_pos >> 1, s->v_edge_pos >> 1);
|
||||
s->vdsp.emulated_edge_mc(uvbuf + 16, srcV, s->uvlinesize, (width<<2)+1, (height<<2)+1,
|
||||
s->vdsp.emulated_edge_mc(uvbuf + 16, srcV,
|
||||
s->uvlinesize, s->uvlinesize,
|
||||
(width << 2) + 1, (height << 2) + 1,
|
||||
uvsrc_x, uvsrc_y, s->h_edge_pos >> 1, s->v_edge_pos >> 1);
|
||||
srcU = uvbuf;
|
||||
srcV = uvbuf + 16;
|
||||
|
||||
Reference in New Issue
Block a user