You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
Merge remote-tracking branch 'cehoyos/master'
* cehoyos/master: Move the iconv test to the bottom of configure. Make 32bit zmbv colour-space opaque. Use uint8_t instead of uint16_t pointer in kega decoder. kgv1dec: Simplify kega decoding by using memcpy instead of loops Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
4
configure
vendored
4
configure
vendored
@@ -3888,7 +3888,6 @@ enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
|
|||||||
enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
|
enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
|
||||||
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
|
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
|
||||||
enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
|
enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
|
||||||
enabled iconv && { check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || die "ERROR: iconv not found"; }
|
|
||||||
enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
|
enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
|
||||||
enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
|
enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
|
||||||
enabled libass && require_pkg_config libass ass/ass.h ass_library_init
|
enabled libass && require_pkg_config libass ass/ass.h ass_library_init
|
||||||
@@ -4053,6 +4052,9 @@ enabled vdpau &&
|
|||||||
check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
|
check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
|
||||||
disable vdpau
|
disable vdpau
|
||||||
|
|
||||||
|
# Funny iconv installations are not unusual, so check it after all flags have been set
|
||||||
|
enabled iconv && { check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || die "ERROR: iconv not found"; }
|
||||||
|
|
||||||
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
|
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
|
||||||
enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
|
enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
|
||||||
test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
|
test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
|
||||||
|
@@ -50,7 +50,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
|||||||
const uint8_t *buf_end = buf + avpkt->size;
|
const uint8_t *buf_end = buf + avpkt->size;
|
||||||
KgvContext * const c = avctx->priv_data;
|
KgvContext * const c = avctx->priv_data;
|
||||||
int offsets[8];
|
int offsets[8];
|
||||||
uint16_t *out, *prev;
|
uint8_t *out, *prev;
|
||||||
int outcnt = 0, maxcnt;
|
int outcnt = 0, maxcnt;
|
||||||
int w, h, i, res;
|
int w, h, i, res;
|
||||||
|
|
||||||
@@ -75,9 +75,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
|||||||
c->cur.reference = 3;
|
c->cur.reference = 3;
|
||||||
if ((res = ff_get_buffer(avctx, &c->cur)) < 0)
|
if ((res = ff_get_buffer(avctx, &c->cur)) < 0)
|
||||||
return res;
|
return res;
|
||||||
out = (uint16_t *) c->cur.data[0];
|
out = c->cur.data[0];
|
||||||
if (c->prev.data[0]) {
|
if (c->prev.data[0]) {
|
||||||
prev = (uint16_t *) c->prev.data[0];
|
prev = c->prev.data[0];
|
||||||
} else {
|
} else {
|
||||||
prev = NULL;
|
prev = NULL;
|
||||||
}
|
}
|
||||||
@@ -90,11 +90,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
|||||||
buf += 2;
|
buf += 2;
|
||||||
|
|
||||||
if (!(code & 0x8000)) {
|
if (!(code & 0x8000)) {
|
||||||
out[outcnt++] = code; // rgb555 pixel coded directly
|
AV_WN16A(&out[2 * outcnt], code); // rgb555 pixel coded directly
|
||||||
|
outcnt++;
|
||||||
} else {
|
} else {
|
||||||
int count;
|
int count;
|
||||||
int inp_off;
|
|
||||||
uint16_t *inp;
|
|
||||||
|
|
||||||
if ((code & 0x6000) == 0x6000) {
|
if ((code & 0x6000) == 0x6000) {
|
||||||
// copy from previous frame
|
// copy from previous frame
|
||||||
@@ -112,7 +111,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
|||||||
|
|
||||||
start = (outcnt + offsets[oidx]) % maxcnt;
|
start = (outcnt + offsets[oidx]) % maxcnt;
|
||||||
|
|
||||||
if (maxcnt - start < count)
|
if (maxcnt - start < count || maxcnt - outcnt < count)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!prev) {
|
if (!prev) {
|
||||||
@@ -121,8 +120,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
inp = prev;
|
memcpy(out + 2 * outcnt, prev + 2 * start, 2 * count);
|
||||||
inp_off = start;
|
|
||||||
} else {
|
} else {
|
||||||
// copy from earlier in this frame
|
// copy from earlier in this frame
|
||||||
int offset = (code & 0x1FFF) + 1;
|
int offset = (code & 0x1FFF) + 1;
|
||||||
@@ -137,19 +135,12 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
|
|||||||
count = 4 + *buf++;
|
count = 4 + *buf++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (outcnt < offset)
|
if (outcnt < offset || maxcnt - outcnt < count)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
inp = out;
|
av_memcpy_backptr(out + 2 * outcnt, 2 * offset, 2 * count);
|
||||||
inp_off = outcnt - offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (maxcnt - outcnt < count)
|
|
||||||
break;
|
|
||||||
|
|
||||||
for (i = inp_off; i < count + inp_off; i++) {
|
|
||||||
out[outcnt++] = inp[i];
|
|
||||||
}
|
}
|
||||||
|
outcnt += count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -479,7 +479,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
|
|||||||
c->bpp = 32;
|
c->bpp = 32;
|
||||||
decode_intra = zmbv_decode_intra;
|
decode_intra = zmbv_decode_intra;
|
||||||
c->decode_xor = zmbv_decode_xor_32;
|
c->decode_xor = zmbv_decode_xor_32;
|
||||||
avctx->pix_fmt = AV_PIX_FMT_BGRA;
|
avctx->pix_fmt = AV_PIX_FMT_BGR0;
|
||||||
c->stride = c->width * 4;
|
c->stride = c->width * 4;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user