mirror of
https://github.com/jellyfin/jellyfin-ffmpeg.git
synced 2024-11-27 08:00:32 +00:00
New upstream version 5.1.1
This commit is contained in:
parent
4e738fb29e
commit
44232bbb6c
31
Changelog
31
Changelog
@ -1,6 +1,37 @@
|
||||
Entries are sorted chronologically from oldest to youngest within each release,
|
||||
releases are sorted from youngest to oldest.
|
||||
|
||||
version 5.1.1:
|
||||
- avformat/asfdec_o: limit recursion depth in asf_read_unknown()
|
||||
- avformat/mov: Check count sums in build_open_gop_key_points()
|
||||
- doc/git-howto.texi: Document commit signing
|
||||
- libavcodec/8bps: Check that line lengths fit within the buffer
|
||||
- avcodec/midivid: Perform lzss_uncompress() before ff_reget_buffer()
|
||||
- libavformat/iff: Check for overflow in body_end calculation
|
||||
- avformat/avidec: Prevent entity expansion attacks
|
||||
- avcodec/h263dec: Sanity check against minimal I/P frame size
|
||||
- avcodec/hevcdec: Check s->ref in the md5 path similar to hwaccel
|
||||
- avcodec/mpegaudiodec_template: use unsigned shift in handle_crc()
|
||||
- avformat/subviewerdec: Make read_ts() more flexible
|
||||
- avcodec/mjpegdec: bayer and rct are incompatible
|
||||
- MAINTAINERS: Add ED25519 key for signing my commits in the future
|
||||
- avcodec/pngdec: Fix APNG_DISPOSE_OP_BACKGROUND
|
||||
- avcodec/libvpx: fix assembling vp9 packets with alpha channel
|
||||
- fftools/ffmpeg_opt: try to propagate the requested output channel layout
|
||||
- avcodec/libsvtav1: properly initialize the flush EbBufferHeaderType struct
|
||||
- configure: enable the av1_frame_split bsf for the av1 decoder
|
||||
- swresample/swresample: fill the correct buffer to print the output layout string
|
||||
- ffprobe: restore reporting error code for failed inputs
|
||||
- ipfsgateway: Remove default gateway
|
||||
- avcodec/libspeexdec: Fix use of uninitialized value
|
||||
- avformat/avisynth: use ch_layout.nb_channels for channel count
|
||||
- fate/lavf-image: Disable file checksums for exr tests
|
||||
- tests/fate-run: Allow to skip file checksums for lavf_image
|
||||
- fate/imf: Rename IMF fate-target
|
||||
- avcodec/alac: don't fail if channels aren't set during init() when extradata is valid
|
||||
- configure: properly require libx264 if enabled
|
||||
|
||||
|
||||
version 5.1:
|
||||
- add ipfs/ipns protocol support
|
||||
- dialogue enhance audio filter
|
||||
|
@ -625,6 +625,7 @@ Leo Izen (thebombzen) B6FD 3CFC 7ACF 83FC 9137 6945 5A71 C331 FD2F A19A
|
||||
Loren Merritt ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE
|
||||
Lynne FE50 139C 6805 72CA FD52 1F8D A2FE A5F0 3F03 4464
|
||||
Michael Niedermayer 9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB
|
||||
DD1E C9E8 DE08 5C62 9B3E 1846 B18E 8928 B394 8D64
|
||||
Nicolas George 24CE 01CE 9ACC 5CEB 74D8 8D9D B063 D997 36E5 4C93
|
||||
Niklas Haas (haasn) 1DDB 8076 B14D 5B48 32FC 99D9 EB52 DA9C 02BA 6FB4
|
||||
Nikolay Aleksandrov 8978 1D8C FB71 588E 4B27 EAA8 C4F0 B5FC E011 13B1
|
||||
|
4
configure
vendored
4
configure
vendored
@ -2781,7 +2781,7 @@ atrac3al_decoder_select="mdct"
|
||||
atrac3p_decoder_select="mdct sinewin"
|
||||
atrac3pal_decoder_select="mdct sinewin"
|
||||
atrac9_decoder_select="mdct"
|
||||
av1_decoder_select="cbs_av1"
|
||||
av1_decoder_select="av1_frame_split_bsf cbs_av1"
|
||||
bink_decoder_select="blockdsp hpeldsp"
|
||||
binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
|
||||
binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
|
||||
@ -6666,7 +6666,7 @@ enabled libvpx && {
|
||||
enabled libwebp && {
|
||||
enabled libwebp_encoder && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
|
||||
enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
|
||||
enabled libx264 && check_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode &&
|
||||
enabled libx264 && require_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode &&
|
||||
require_cpp_condition libx264 x264.h "X264_BUILD >= 118" && {
|
||||
[ "$toolchain" != "msvc" ] ||
|
||||
require_cpp_condition libx264 x264.h "X264_BUILD >= 158"; } &&
|
||||
|
@ -38,7 +38,7 @@ PROJECT_NAME = FFmpeg
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 5.1
|
||||
PROJECT_NUMBER = 5.1.1
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
@ -187,11 +187,18 @@ to make sure you don't have untracked files or deletions.
|
||||
git add [-i|-p|-A] <filenames/dirnames>
|
||||
@end example
|
||||
|
||||
Make sure you have told Git your name and email address
|
||||
Make sure you have told Git your name, email address and GPG key
|
||||
|
||||
@example
|
||||
git config --global user.name "My Name"
|
||||
git config --global user.email my@@email.invalid
|
||||
git config --global user.signingkey ABCDEF0123245
|
||||
@end example
|
||||
|
||||
Enable signing all commits or use -S
|
||||
|
||||
@example
|
||||
git config --global commit.gpgsign true
|
||||
@end example
|
||||
|
||||
Use @option{--global} to set the global configuration for all your Git checkouts.
|
||||
@ -423,6 +430,19 @@ git checkout -b svn_23456 $SHA1
|
||||
where @var{$SHA1} is the commit hash from the @command{git log} output.
|
||||
|
||||
|
||||
@chapter gpg key generation
|
||||
|
||||
If you have no gpg key yet, we recommend that you create a ed25519 based key as it
|
||||
is small, fast and secure. Especially it results in small signatures in git.
|
||||
|
||||
@example
|
||||
gpg --default-new-key-algo "ed25519/cert,sign+cv25519/encr" --quick-generate-key "human@@server.com"
|
||||
@end example
|
||||
|
||||
When generating a key, make sure the email specified matches the email used in git as some sites like
|
||||
github consider mismatches a reason to declare such commits unverified. After generating a key you
|
||||
can add it to the MAINTAINER file and upload it to a keyserver.
|
||||
|
||||
@chapter Pre-push checklist
|
||||
|
||||
Once you have a set of commits that you feel are ready for pushing,
|
||||
|
@ -2372,6 +2372,43 @@ static int init_complex_filters(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void set_channel_layout(OutputFilter *f, OutputStream *ost)
|
||||
{
|
||||
int i, err;
|
||||
|
||||
if (ost->enc_ctx->ch_layout.order != AV_CHANNEL_ORDER_UNSPEC) {
|
||||
/* Pass the layout through for all orders but UNSPEC */
|
||||
err = av_channel_layout_copy(&f->ch_layout, &ost->enc_ctx->ch_layout);
|
||||
if (err < 0)
|
||||
exit_program(1);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Requested layout is of order UNSPEC */
|
||||
if (!ost->enc->ch_layouts) {
|
||||
/* Use the default native layout for the requested amount of channels when the
|
||||
encoder doesn't have a list of supported layouts */
|
||||
av_channel_layout_default(&f->ch_layout, ost->enc_ctx->ch_layout.nb_channels);
|
||||
return;
|
||||
}
|
||||
/* Encoder has a list of supported layouts. Pick the first layout in it with the
|
||||
same amount of channels as the requested layout */
|
||||
for (i = 0; ost->enc->ch_layouts[i].nb_channels; i++) {
|
||||
if (ost->enc->ch_layouts[i].nb_channels == ost->enc_ctx->ch_layout.nb_channels)
|
||||
break;
|
||||
}
|
||||
if (ost->enc->ch_layouts[i].nb_channels) {
|
||||
/* Use it if one is found */
|
||||
err = av_channel_layout_copy(&f->ch_layout, &ost->enc->ch_layouts[i]);
|
||||
if (err < 0)
|
||||
exit_program(1);
|
||||
return;
|
||||
}
|
||||
/* If no layout for the amount of channels requested was found, use the default
|
||||
native layout for it. */
|
||||
av_channel_layout_default(&f->ch_layout, ost->enc_ctx->ch_layout.nb_channels);
|
||||
}
|
||||
|
||||
static int open_output_file(OptionsContext *o, const char *filename)
|
||||
{
|
||||
AVFormatContext *oc;
|
||||
@ -2774,7 +2811,7 @@ loop_end:
|
||||
f->sample_rates = ost->enc->supported_samplerates;
|
||||
}
|
||||
if (ost->enc_ctx->ch_layout.nb_channels) {
|
||||
av_channel_layout_default(&f->ch_layout, ost->enc_ctx->ch_layout.nb_channels);
|
||||
set_channel_layout(f, ost);
|
||||
} else if (ost->enc->ch_layouts) {
|
||||
f->ch_layouts = ost->enc->ch_layouts;
|
||||
}
|
||||
|
@ -4026,7 +4026,7 @@ int main(int argc, char **argv)
|
||||
WriterContext *wctx;
|
||||
char *buf;
|
||||
char *w_name = NULL, *w_args = NULL;
|
||||
int ret, i;
|
||||
int ret, input_ret, i;
|
||||
|
||||
init_dynload();
|
||||
|
||||
@ -4150,10 +4150,14 @@ int main(int argc, char **argv)
|
||||
show_error(wctx, ret);
|
||||
}
|
||||
|
||||
input_ret = ret;
|
||||
|
||||
writer_print_section_footer(wctx);
|
||||
ret = writer_close(&wctx);
|
||||
if (ret < 0)
|
||||
av_log(NULL, AV_LOG_ERROR, "Writing output failed: %s\n", av_err2str(ret));
|
||||
|
||||
ret = FFMIN(ret, input_ret);
|
||||
}
|
||||
|
||||
end:
|
||||
|
@ -71,6 +71,9 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
||||
unsigned char *planemap = c->planemap;
|
||||
int ret;
|
||||
|
||||
if (buf_size < planes * height *2)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
|
||||
return ret;
|
||||
|
||||
|
@ -574,13 +574,15 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
|
||||
avctx->bits_per_raw_sample = alac->sample_size;
|
||||
avctx->sample_rate = alac->sample_rate;
|
||||
|
||||
if (alac->channels < 1 || alac->channels > ALAC_MAX_CHANNELS) {
|
||||
if (alac->channels < 1) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Invalid channel count\n");
|
||||
if (avctx->ch_layout.nb_channels < 1)
|
||||
return AVERROR(EINVAL);
|
||||
alac->channels = avctx->ch_layout.nb_channels;
|
||||
}
|
||||
if (avctx->ch_layout.nb_channels > ALAC_MAX_CHANNELS || avctx->ch_layout.nb_channels <= 0 ) {
|
||||
if (alac->channels > ALAC_MAX_CHANNELS) {
|
||||
avpriv_report_missing_feature(avctx, "Channel count %d",
|
||||
avctx->ch_layout.nb_channels);
|
||||
alac->channels);
|
||||
return AVERROR_PATCHWELCOME;
|
||||
}
|
||||
av_channel_layout_uninit(&avctx->ch_layout);
|
||||
|
@ -552,6 +552,8 @@ retry:
|
||||
avctx->has_b_frames = !s->low_delay;
|
||||
|
||||
if (CONFIG_MPEG4_DECODER && avctx->codec_id == AV_CODEC_ID_MPEG4) {
|
||||
if (s->pict_type != AV_PICTURE_TYPE_B && s->mb_num/2 > get_bits_left(&s->gb))
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (ff_mpeg4_workaround_bugs(avctx) == 1)
|
||||
goto retry;
|
||||
if (s->studio_profile != (s->idsp.idct == NULL))
|
||||
|
@ -3516,7 +3516,7 @@ static int hevc_decode_frame(AVCodecContext *avctx, AVFrame *rframe,
|
||||
}
|
||||
} else {
|
||||
/* verify the SEI checksum */
|
||||
if (avctx->err_recognition & AV_EF_CRCCHECK && s->is_decoded &&
|
||||
if (avctx->err_recognition & AV_EF_CRCCHECK && s->ref && s->is_decoded &&
|
||||
s->sei.picture_hash.is_md5) {
|
||||
ret = verify_md5(s, s->ref->frame);
|
||||
if (ret < 0 && avctx->err_recognition & AV_EF_EXPLODE) {
|
||||
|
@ -43,7 +43,7 @@ static av_cold int libspeex_decode_init(AVCodecContext *avctx)
|
||||
LibSpeexContext *s = avctx->priv_data;
|
||||
const SpeexMode *mode;
|
||||
SpeexHeader *header = NULL;
|
||||
int spx_mode, channels;
|
||||
int spx_mode, channels = avctx->ch_layout.nb_channels;
|
||||
|
||||
if (avctx->extradata && avctx->extradata_size >= 80) {
|
||||
header = speex_packet_to_header(avctx->extradata,
|
||||
|
@ -424,11 +424,8 @@ static int eb_send_frame(AVCodecContext *avctx, const AVFrame *frame)
|
||||
if (svt_enc->eos_flag == EOS_SENT)
|
||||
return 0;
|
||||
|
||||
headerPtrLast.n_alloc_len = 0;
|
||||
headerPtrLast.n_filled_len = 0;
|
||||
headerPtrLast.n_tick_count = 0;
|
||||
headerPtrLast.p_app_private = NULL;
|
||||
headerPtrLast.p_buffer = NULL;
|
||||
memset(&headerPtrLast, 0, sizeof(headerPtrLast));
|
||||
headerPtrLast.pic_type = EB_AV1_INVALID_PICTURE;
|
||||
headerPtrLast.flags = EB_BUFFERFLAG_EOS;
|
||||
|
||||
svt_av1_enc_send_picture(svt_enc->svt_handle, &headerPtrLast);
|
||||
|
@ -56,8 +56,6 @@
|
||||
struct FrameListData {
|
||||
void *buf; /**< compressed data buffer */
|
||||
size_t sz; /**< length of compressed data */
|
||||
void *buf_alpha;
|
||||
size_t sz_alpha;
|
||||
int64_t pts; /**< time stamp to show frame
|
||||
(in timebase units) */
|
||||
unsigned long duration; /**< duration to show frame
|
||||
@ -87,6 +85,7 @@ typedef struct VPxEncoderContext {
|
||||
int have_sse; /**< true if we have pending sse[] */
|
||||
uint64_t frame_number;
|
||||
struct FrameListData *coded_frame_list;
|
||||
struct FrameListData *alpha_coded_frame_list;
|
||||
|
||||
int cpu_used;
|
||||
int sharpness;
|
||||
@ -311,8 +310,6 @@ static void coded_frame_add(void *list, struct FrameListData *cx_frame)
|
||||
static av_cold void free_coded_frame(struct FrameListData *cx_frame)
|
||||
{
|
||||
av_freep(&cx_frame->buf);
|
||||
if (cx_frame->buf_alpha)
|
||||
av_freep(&cx_frame->buf_alpha);
|
||||
av_freep(&cx_frame);
|
||||
}
|
||||
|
||||
@ -446,6 +443,7 @@ static av_cold int vpx_free(AVCodecContext *avctx)
|
||||
av_freep(&ctx->twopass_stats.buf);
|
||||
av_freep(&avctx->stats_out);
|
||||
free_frame_list(ctx->coded_frame_list);
|
||||
free_frame_list(ctx->alpha_coded_frame_list);
|
||||
if (ctx->hdr10_plus_fifo)
|
||||
free_hdr10_plus_fifo(&ctx->hdr10_plus_fifo);
|
||||
return 0;
|
||||
@ -1205,7 +1203,6 @@ static av_cold int vpx_init(AVCodecContext *avctx,
|
||||
|
||||
static inline void cx_pktcpy(struct FrameListData *dst,
|
||||
const struct vpx_codec_cx_pkt *src,
|
||||
const struct vpx_codec_cx_pkt *src_alpha,
|
||||
VPxContext *ctx)
|
||||
{
|
||||
dst->pts = src->data.frame.pts;
|
||||
@ -1229,13 +1226,6 @@ static inline void cx_pktcpy(struct FrameListData *dst,
|
||||
} else {
|
||||
dst->frame_number = -1; /* sanity marker */
|
||||
}
|
||||
if (src_alpha) {
|
||||
dst->buf_alpha = src_alpha->data.frame.buf;
|
||||
dst->sz_alpha = src_alpha->data.frame.sz;
|
||||
} else {
|
||||
dst->buf_alpha = NULL;
|
||||
dst->sz_alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1246,7 +1236,7 @@ static inline void cx_pktcpy(struct FrameListData *dst,
|
||||
* @return a negative AVERROR on error
|
||||
*/
|
||||
static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame,
|
||||
AVPacket *pkt)
|
||||
struct FrameListData *alpha_cx_frame, AVPacket *pkt)
|
||||
{
|
||||
VPxContext *ctx = avctx->priv_data;
|
||||
int ret = ff_get_encode_buffer(avctx, pkt, cx_frame->sz, 0);
|
||||
@ -1279,16 +1269,16 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame,
|
||||
avctx->error[i] += cx_frame->sse[i + 1];
|
||||
cx_frame->have_sse = 0;
|
||||
}
|
||||
if (cx_frame->sz_alpha > 0) {
|
||||
if (alpha_cx_frame) {
|
||||
side_data = av_packet_new_side_data(pkt,
|
||||
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
|
||||
cx_frame->sz_alpha + 8);
|
||||
alpha_cx_frame->sz + 8);
|
||||
if (!side_data) {
|
||||
av_packet_unref(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
AV_WB64(side_data, 1);
|
||||
memcpy(side_data + 8, cx_frame->buf_alpha, cx_frame->sz_alpha);
|
||||
memcpy(side_data + 8, alpha_cx_frame->buf, alpha_cx_frame->sz);
|
||||
}
|
||||
if (cx_frame->frame_number != -1) {
|
||||
if (ctx->hdr10_plus_fifo) {
|
||||
@ -1309,40 +1299,37 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame,
|
||||
* @return AVERROR(EINVAL) on output size error
|
||||
* @return AVERROR(ENOMEM) on coded frame queue data allocation error
|
||||
*/
|
||||
static int queue_frames(AVCodecContext *avctx, AVPacket *pkt_out)
|
||||
static int queue_frames(AVCodecContext *avctx, struct vpx_codec_ctx *encoder,
|
||||
struct FrameListData **frame_list, AVPacket *pkt_out)
|
||||
{
|
||||
VPxContext *ctx = avctx->priv_data;
|
||||
const struct vpx_codec_cx_pkt *pkt;
|
||||
const struct vpx_codec_cx_pkt *pkt_alpha = NULL;
|
||||
const void *iter = NULL;
|
||||
const void *iter_alpha = NULL;
|
||||
int size = 0;
|
||||
|
||||
if (ctx->coded_frame_list) {
|
||||
struct FrameListData *cx_frame = ctx->coded_frame_list;
|
||||
if (!ctx->is_alpha && *frame_list) {
|
||||
struct FrameListData *cx_frame = *frame_list;
|
||||
/* return the leading frame if we've already begun queueing */
|
||||
size = storeframe(avctx, cx_frame, pkt_out);
|
||||
size = storeframe(avctx, cx_frame, NULL, pkt_out);
|
||||
if (size < 0)
|
||||
return size;
|
||||
ctx->coded_frame_list = cx_frame->next;
|
||||
*frame_list = cx_frame->next;
|
||||
free_coded_frame(cx_frame);
|
||||
}
|
||||
|
||||
/* consume all available output from the encoder before returning. buffers
|
||||
are only good through the next vpx_codec call */
|
||||
while ((pkt = vpx_codec_get_cx_data(&ctx->encoder, &iter)) &&
|
||||
(!ctx->is_alpha ||
|
||||
(pkt_alpha = vpx_codec_get_cx_data(&ctx->encoder_alpha, &iter_alpha)))) {
|
||||
while (pkt = vpx_codec_get_cx_data(encoder, &iter)) {
|
||||
switch (pkt->kind) {
|
||||
case VPX_CODEC_CX_FRAME_PKT:
|
||||
if (!size) {
|
||||
if (!ctx->is_alpha && !size) {
|
||||
struct FrameListData cx_frame;
|
||||
|
||||
/* avoid storing the frame when the list is empty and we haven't yet
|
||||
provided a frame for output */
|
||||
av_assert0(!ctx->coded_frame_list);
|
||||
cx_pktcpy(&cx_frame, pkt, pkt_alpha, ctx);
|
||||
size = storeframe(avctx, &cx_frame, pkt_out);
|
||||
cx_pktcpy(&cx_frame, pkt, ctx);
|
||||
size = storeframe(avctx, &cx_frame, NULL, pkt_out);
|
||||
if (size < 0)
|
||||
return size;
|
||||
} else {
|
||||
@ -1353,7 +1340,7 @@ static int queue_frames(AVCodecContext *avctx, AVPacket *pkt_out)
|
||||
"Frame queue element alloc failed\n");
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
cx_pktcpy(cx_frame, pkt, pkt_alpha, ctx);
|
||||
cx_pktcpy(cx_frame, pkt, ctx);
|
||||
cx_frame->buf = av_malloc(cx_frame->sz);
|
||||
|
||||
if (!cx_frame->buf) {
|
||||
@ -1364,23 +1351,14 @@ static int queue_frames(AVCodecContext *avctx, AVPacket *pkt_out)
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
memcpy(cx_frame->buf, pkt->data.frame.buf, pkt->data.frame.sz);
|
||||
if (ctx->is_alpha) {
|
||||
cx_frame->buf_alpha = av_malloc(cx_frame->sz_alpha);
|
||||
if (!cx_frame->buf_alpha) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Data buffer alloc (%"SIZE_SPECIFIER" bytes) failed\n",
|
||||
cx_frame->sz_alpha);
|
||||
av_free(cx_frame);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
memcpy(cx_frame->buf_alpha, pkt_alpha->data.frame.buf, pkt_alpha->data.frame.sz);
|
||||
}
|
||||
coded_frame_add(&ctx->coded_frame_list, cx_frame);
|
||||
coded_frame_add(frame_list, cx_frame);
|
||||
}
|
||||
break;
|
||||
case VPX_CODEC_STATS_PKT: {
|
||||
struct vpx_fixed_buf *stats = &ctx->twopass_stats;
|
||||
int err;
|
||||
if (!pkt_out)
|
||||
break;
|
||||
if ((err = av_reallocp(&stats->buf,
|
||||
stats->sz +
|
||||
pkt->data.twopass_stats.sz)) < 0) {
|
||||
@ -1394,6 +1372,8 @@ static int queue_frames(AVCodecContext *avctx, AVPacket *pkt_out)
|
||||
break;
|
||||
}
|
||||
case VPX_CODEC_PSNR_PKT:
|
||||
if (!pkt_out)
|
||||
break;
|
||||
av_assert0(!ctx->have_sse);
|
||||
ctx->sse[0] = pkt->data.psnr.sse[0];
|
||||
ctx->sse[1] = pkt->data.psnr.sse[1];
|
||||
@ -1788,7 +1768,24 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt,
|
||||
}
|
||||
}
|
||||
|
||||
coded_size = queue_frames(avctx, pkt);
|
||||
coded_size = queue_frames(avctx, &ctx->encoder, &ctx->coded_frame_list, pkt);
|
||||
if (ctx->is_alpha) {
|
||||
queue_frames(avctx, &ctx->encoder_alpha, &ctx->alpha_coded_frame_list, NULL);
|
||||
|
||||
if (ctx->coded_frame_list && ctx->alpha_coded_frame_list) {
|
||||
struct FrameListData *cx_frame = ctx->coded_frame_list;
|
||||
struct FrameListData *alpha_cx_frame = ctx->alpha_coded_frame_list;
|
||||
av_assert0(!coded_size);
|
||||
/* return the leading frame if we've already begun queueing */
|
||||
coded_size = storeframe(avctx, cx_frame, alpha_cx_frame, pkt);
|
||||
if (coded_size < 0)
|
||||
return coded_size;
|
||||
ctx->coded_frame_list = cx_frame->next;
|
||||
ctx->alpha_coded_frame_list = alpha_cx_frame->next;
|
||||
free_coded_frame(cx_frame);
|
||||
free_coded_frame(alpha_cx_frame);
|
||||
}
|
||||
}
|
||||
|
||||
if (!frame && avctx->flags & AV_CODEC_FLAG_PASS1) {
|
||||
unsigned int b64_size = AV_BASE64_SIZE(ctx->twopass_stats.sz);
|
||||
|
@ -203,12 +203,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
|
||||
bytestream2_skip(gb, 8);
|
||||
uncompressed = bytestream2_get_le32(gb);
|
||||
|
||||
if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
|
||||
return ret;
|
||||
|
||||
if (uncompressed) {
|
||||
ret = decode_mvdv(s, avctx, frame);
|
||||
} else {
|
||||
if (!uncompressed) {
|
||||
av_fast_padded_malloc(&s->uncompressed, &s->uncompressed_size, 16LL * (avpkt->size - 12));
|
||||
if (!s->uncompressed)
|
||||
return AVERROR(ENOMEM);
|
||||
@ -217,9 +212,13 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *rframe,
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
bytestream2_init(gb, s->uncompressed, ret);
|
||||
ret = decode_mvdv(s, avctx, frame);
|
||||
}
|
||||
|
||||
if ((ret = ff_reget_buffer(avctx, s->frame, 0)) < 0)
|
||||
return ret;
|
||||
|
||||
ret = decode_mvdv(s, avctx, frame);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
key = ret;
|
||||
|
@ -1092,6 +1092,10 @@ static int ljpeg_decode_rgb_scan(MJpegDecodeContext *s, int nb_components, int p
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (s->v_max != 1 || s->h_max != 1 || !s->lossless)
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (s->bayer) {
|
||||
if (s->rct || s->pegasus_rct)
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
|
||||
s->restart_count = s->restart_interval;
|
||||
@ -1942,6 +1946,8 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
|
||||
}
|
||||
|
||||
len -= 9;
|
||||
if (s->bayer)
|
||||
goto out;
|
||||
if (s->got_picture)
|
||||
if (rgb != s->rgb || pegasus_rct != s->pegasus_rct) {
|
||||
av_log(s->avctx, AV_LOG_WARNING, "Mismatching LJIF tag\n");
|
||||
|
@ -374,7 +374,7 @@ static int handle_crc(MPADecodeContext *s, int sec_len)
|
||||
crc_val = av_crc(crc_tab, crc_val, &buf[6], sec_byte_len);
|
||||
|
||||
AV_WB32(tmp_buf,
|
||||
((buf[6 + sec_byte_len] & (0xFF00 >> sec_rem_bits)) << 24) +
|
||||
((buf[6 + sec_byte_len] & (0xFF00U >> sec_rem_bits)) << 24) +
|
||||
((s->crc << 16) >> sec_rem_bits));
|
||||
|
||||
crc_val = av_crc(crc_tab, crc_val, tmp_buf, 3);
|
||||
|
@ -78,11 +78,8 @@ typedef struct PNGDecContext {
|
||||
enum PNGImageState pic_state;
|
||||
int width, height;
|
||||
int cur_w, cur_h;
|
||||
int last_w, last_h;
|
||||
int x_offset, y_offset;
|
||||
int last_x_offset, last_y_offset;
|
||||
uint8_t dispose_op, blend_op;
|
||||
uint8_t last_dispose_op;
|
||||
int bit_depth;
|
||||
int color_type;
|
||||
int compression_type;
|
||||
@ -94,8 +91,6 @@ typedef struct PNGDecContext {
|
||||
int has_trns;
|
||||
uint8_t transparent_color_be[6];
|
||||
|
||||
uint8_t *background_buf;
|
||||
unsigned background_buf_allocated;
|
||||
uint32_t palette[256];
|
||||
uint8_t *crow_buf;
|
||||
uint8_t *last_row;
|
||||
@ -725,9 +720,30 @@ static int decode_idat_chunk(AVCodecContext *avctx, PNGDecContext *s,
|
||||
}
|
||||
|
||||
ff_thread_release_ext_buffer(avctx, &s->picture);
|
||||
if ((ret = ff_thread_get_ext_buffer(avctx, &s->picture,
|
||||
AV_GET_BUFFER_FLAG_REF)) < 0)
|
||||
return ret;
|
||||
if (s->dispose_op == APNG_DISPOSE_OP_PREVIOUS) {
|
||||
/* We only need a buffer for the current picture. */
|
||||
ret = ff_thread_get_buffer(avctx, p, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
} else if (s->dispose_op == APNG_DISPOSE_OP_BACKGROUND) {
|
||||
/* We need a buffer for the current picture as well as
|
||||
* a buffer for the reference to retain. */
|
||||
ret = ff_thread_get_ext_buffer(avctx, &s->picture,
|
||||
AV_GET_BUFFER_FLAG_REF);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = ff_thread_get_buffer(avctx, p, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
} else {
|
||||
/* The picture output this time and the reference to retain coincide. */
|
||||
if ((ret = ff_thread_get_ext_buffer(avctx, &s->picture,
|
||||
AV_GET_BUFFER_FLAG_REF)) < 0)
|
||||
return ret;
|
||||
ret = av_frame_ref(p, s->picture.f);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
p->pict_type = AV_PICTURE_TYPE_I;
|
||||
p->key_frame = 1;
|
||||
@ -985,12 +1001,6 @@ static int decode_fctl_chunk(AVCodecContext *avctx, PNGDecContext *s,
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
s->last_w = s->cur_w;
|
||||
s->last_h = s->cur_h;
|
||||
s->last_x_offset = s->x_offset;
|
||||
s->last_y_offset = s->y_offset;
|
||||
s->last_dispose_op = s->dispose_op;
|
||||
|
||||
sequence_number = bytestream2_get_be32(gb);
|
||||
cur_w = bytestream2_get_be32(gb);
|
||||
cur_h = bytestream2_get_be32(gb);
|
||||
@ -1086,23 +1096,6 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s,
|
||||
|
||||
ff_thread_await_progress(&s->last_picture, INT_MAX, 0);
|
||||
|
||||
// need to reset a rectangle to background:
|
||||
if (s->last_dispose_op == APNG_DISPOSE_OP_BACKGROUND) {
|
||||
av_fast_malloc(&s->background_buf, &s->background_buf_allocated,
|
||||
src_stride * p->height);
|
||||
if (!s->background_buf)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
memcpy(s->background_buf, src, src_stride * p->height);
|
||||
|
||||
for (y = s->last_y_offset; y < s->last_y_offset + s->last_h; y++) {
|
||||
memset(s->background_buf + src_stride * y +
|
||||
bpp * s->last_x_offset, 0, bpp * s->last_w);
|
||||
}
|
||||
|
||||
src = s->background_buf;
|
||||
}
|
||||
|
||||
// copy unchanged rectangles from the last frame
|
||||
for (y = 0; y < s->y_offset; y++)
|
||||
memcpy(dst + y * dst_stride, src + y * src_stride, p->width * bpp);
|
||||
@ -1171,6 +1164,22 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void apng_reset_background(PNGDecContext *s, const AVFrame *p)
|
||||
{
|
||||
// need to reset a rectangle to black
|
||||
av_unused int ret = av_frame_copy(s->picture.f, p);
|
||||
const int bpp = s->color_type == PNG_COLOR_TYPE_PALETTE ? 4 : s->bpp;
|
||||
const ptrdiff_t dst_stride = s->picture.f->linesize[0];
|
||||
uint8_t *dst = s->picture.f->data[0] + s->y_offset * dst_stride + bpp * s->x_offset;
|
||||
|
||||
av_assert1(ret >= 0);
|
||||
|
||||
for (size_t y = 0; y < s->cur_h; y++) {
|
||||
memset(dst, 0, bpp * s->cur_w);
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
static int decode_frame_common(AVCodecContext *avctx, PNGDecContext *s,
|
||||
AVFrame *p, const AVPacket *avpkt)
|
||||
{
|
||||
@ -1434,6 +1443,9 @@ exit_loop:
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if (CONFIG_APNG_DECODER && s->dispose_op == APNG_DISPOSE_OP_BACKGROUND)
|
||||
apng_reset_background(s, p);
|
||||
|
||||
ff_thread_report_progress(&s->picture, INT_MAX, 0);
|
||||
|
||||
return 0;
|
||||
@ -1456,15 +1468,10 @@ static void clear_frame_metadata(PNGDecContext *s)
|
||||
av_dict_free(&s->frame_metadata);
|
||||
}
|
||||
|
||||
static int output_frame(PNGDecContext *s, AVFrame *f,
|
||||
const AVFrame *src)
|
||||
static int output_frame(PNGDecContext *s, AVFrame *f)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = av_frame_ref(f, src);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (s->iccp_data) {
|
||||
AVFrameSideData *sd = av_frame_new_side_data(f, AV_FRAME_DATA_ICC_PROFILE, s->iccp_data_len);
|
||||
if (!sd) {
|
||||
@ -1515,13 +1522,12 @@ fail:
|
||||
}
|
||||
|
||||
#if CONFIG_PNG_DECODER
|
||||
static int decode_frame_png(AVCodecContext *avctx, AVFrame *dst_frame,
|
||||
static int decode_frame_png(AVCodecContext *avctx, AVFrame *p,
|
||||
int *got_frame, AVPacket *avpkt)
|
||||
{
|
||||
PNGDecContext *const s = avctx->priv_data;
|
||||
const uint8_t *buf = avpkt->data;
|
||||
int buf_size = avpkt->size;
|
||||
AVFrame *p = s->picture.f;
|
||||
int64_t sig;
|
||||
int ret;
|
||||
|
||||
@ -1555,7 +1561,7 @@ static int decode_frame_png(AVCodecContext *avctx, AVFrame *dst_frame,
|
||||
goto the_end;
|
||||
}
|
||||
|
||||
ret = output_frame(s, dst_frame, s->picture.f);
|
||||
ret = output_frame(s, p);
|
||||
if (ret < 0)
|
||||
goto the_end;
|
||||
|
||||
@ -1574,12 +1580,11 @@ the_end:
|
||||
#endif
|
||||
|
||||
#if CONFIG_APNG_DECODER
|
||||
static int decode_frame_apng(AVCodecContext *avctx, AVFrame *dst_frame,
|
||||
static int decode_frame_apng(AVCodecContext *avctx, AVFrame *p,
|
||||
int *got_frame, AVPacket *avpkt)
|
||||
{
|
||||
PNGDecContext *const s = avctx->priv_data;
|
||||
int ret;
|
||||
AVFrame *p = s->picture.f;
|
||||
|
||||
clear_frame_metadata(s);
|
||||
|
||||
@ -1608,7 +1613,7 @@ static int decode_frame_apng(AVCodecContext *avctx, AVFrame *dst_frame,
|
||||
if (!(s->pic_state & (PNG_ALLIMAGE|PNG_IDAT)))
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
ret = output_frame(s, dst_frame, s->picture.f);
|
||||
ret = output_frame(s, p);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@ -1646,15 +1651,9 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
|
||||
pdst->compression_type = psrc->compression_type;
|
||||
pdst->interlace_type = psrc->interlace_type;
|
||||
pdst->filter_type = psrc->filter_type;
|
||||
pdst->cur_w = psrc->cur_w;
|
||||
pdst->cur_h = psrc->cur_h;
|
||||
pdst->x_offset = psrc->x_offset;
|
||||
pdst->y_offset = psrc->y_offset;
|
||||
pdst->has_trns = psrc->has_trns;
|
||||
memcpy(pdst->transparent_color_be, psrc->transparent_color_be, sizeof(pdst->transparent_color_be));
|
||||
|
||||
pdst->dispose_op = psrc->dispose_op;
|
||||
|
||||
memcpy(pdst->palette, psrc->palette, sizeof(pdst->palette));
|
||||
|
||||
pdst->hdr_state |= psrc->hdr_state;
|
||||
@ -1705,7 +1704,6 @@ static av_cold int png_dec_end(AVCodecContext *avctx)
|
||||
s->last_row_size = 0;
|
||||
av_freep(&s->tmp_row);
|
||||
s->tmp_row_size = 0;
|
||||
av_freep(&s->background_buf);
|
||||
|
||||
av_freep(&s->iccp_data);
|
||||
av_dict_free(&s->frame_metadata);
|
||||
|
@ -109,6 +109,7 @@ typedef struct ASFContext {
|
||||
int64_t data_offset;
|
||||
int64_t first_packet_offset; // packet offset
|
||||
int64_t unknown_offset; // for top level header objects or subobjects without specified behavior
|
||||
int in_asf_read_unknown;
|
||||
|
||||
// ASF file must not contain more than 128 streams according to the specification
|
||||
ASFStream *asf_st[ASF_MAX_STREAMS];
|
||||
@ -173,7 +174,7 @@ static int asf_read_unknown(AVFormatContext *s, const GUIDParseTable *g)
|
||||
uint64_t size = avio_rl64(pb);
|
||||
int ret;
|
||||
|
||||
if (size > INT64_MAX)
|
||||
if (size > INT64_MAX || asf->in_asf_read_unknown > 5)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
if (asf->is_header)
|
||||
@ -182,8 +183,11 @@ static int asf_read_unknown(AVFormatContext *s, const GUIDParseTable *g)
|
||||
if (!g->is_subobject) {
|
||||
if (!(ret = strcmp(g->name, "Header Extension")))
|
||||
avio_skip(pb, 22); // skip reserved fields and Data Size
|
||||
if ((ret = detect_unknown_subobject(s, asf->unknown_offset,
|
||||
asf->unknown_size)) < 0)
|
||||
asf->in_asf_read_unknown ++;
|
||||
ret = detect_unknown_subobject(s, asf->unknown_offset,
|
||||
asf->unknown_size);
|
||||
asf->in_asf_read_unknown --;
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
} else {
|
||||
if (size < 24) {
|
||||
|
@ -82,6 +82,8 @@ typedef struct AVIContext {
|
||||
int stream_index;
|
||||
DVDemuxContext *dv_demux;
|
||||
int odml_depth;
|
||||
int64_t odml_read;
|
||||
int64_t odml_max_pos;
|
||||
int use_odml;
|
||||
#define MAX_ODML_DEPTH 1000
|
||||
int64_t dts_max;
|
||||
@ -200,7 +202,7 @@ static int read_odml_index(AVFormatContext *s, int64_t frame_num)
|
||||
st = s->streams[stream_id];
|
||||
ast = st->priv_data;
|
||||
|
||||
if (index_sub_type)
|
||||
if (index_sub_type || entries_in_use < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
avio_rl32(pb);
|
||||
@ -221,11 +223,18 @@ static int read_odml_index(AVFormatContext *s, int64_t frame_num)
|
||||
}
|
||||
|
||||
for (i = 0; i < entries_in_use; i++) {
|
||||
avi->odml_max_pos = FFMAX(avi->odml_max_pos, avio_tell(pb));
|
||||
|
||||
// If we read more than there are bytes then we must have been reading something twice
|
||||
if (avi->odml_read > avi->odml_max_pos)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
if (index_type) {
|
||||
int64_t pos = avio_rl32(pb) + base - 8;
|
||||
int len = avio_rl32(pb);
|
||||
int key = len >= 0;
|
||||
len &= 0x7FFFFFFF;
|
||||
avi->odml_read += 8;
|
||||
|
||||
av_log(s, AV_LOG_TRACE, "pos:%"PRId64", len:%X\n", pos, len);
|
||||
|
||||
@ -244,6 +253,7 @@ static int read_odml_index(AVFormatContext *s, int64_t frame_num)
|
||||
int64_t offset, pos;
|
||||
int duration;
|
||||
int ret;
|
||||
avi->odml_read += 16;
|
||||
|
||||
offset = avio_rl64(pb);
|
||||
avio_rl32(pb); /* size */
|
||||
|
@ -752,7 +752,7 @@ static int avisynth_create_stream_audio(AVFormatContext *s, AVStream *st)
|
||||
|
||||
st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
|
||||
st->codecpar->sample_rate = avs->vi->audio_samples_per_second;
|
||||
st->codecpar->channels = avs->vi->nchannels;
|
||||
st->codecpar->ch_layout.nb_channels = avs->vi->nchannels;
|
||||
st->duration = avs->vi->num_audio_samples;
|
||||
avpriv_set_pts_info(st, 64, 1, avs->vi->audio_samples_per_second);
|
||||
|
||||
|
@ -501,6 +501,9 @@ static int iff_read_header(AVFormatContext *s)
|
||||
case ID_DST:
|
||||
case ID_MDAT:
|
||||
iff->body_pos = avio_tell(pb);
|
||||
if (iff->body_pos < 0 || iff->body_pos + data_size > INT64_MAX)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
iff->body_end = iff->body_pos + data_size;
|
||||
iff->body_size = data_size;
|
||||
if (chunk_id == ID_DST) {
|
||||
|
@ -240,13 +240,8 @@ static int translate_ipfs_to_http(URLContext *h, const char *uri, int flags, AVD
|
||||
ret = populate_ipfs_gateway(h);
|
||||
|
||||
if (ret < 1) {
|
||||
// We fallback on dweb.link (managed by Protocol Labs).
|
||||
snprintf(c->gateway_buffer, sizeof(c->gateway_buffer), "https://dweb.link");
|
||||
|
||||
av_log(h, AV_LOG_WARNING,
|
||||
"IPFS does not appear to be running. "
|
||||
"You’re now using the public gateway at dweb.link.\n");
|
||||
av_log(h, AV_LOG_INFO,
|
||||
av_log(h, AV_LOG_ERROR,
|
||||
"IPFS does not appear to be running.\n\n"
|
||||
"Installing IPFS locally is recommended to "
|
||||
"improve performance and reliability, "
|
||||
"and not share all your activity with a single IPFS gateway.\n"
|
||||
@ -259,6 +254,8 @@ static int translate_ipfs_to_http(URLContext *h, const char *uri, int flags, AVD
|
||||
"3. Define an $IPFS_PATH environment variable "
|
||||
"and point it to the IPFS data path "
|
||||
"- this is typically ~/.ipfs\n");
|
||||
ret = AVERROR(EINVAL);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3949,8 +3949,11 @@ static int build_open_gop_key_points(AVStream *st)
|
||||
|
||||
/* Build an unrolled index of the samples */
|
||||
sc->sample_offsets_count = 0;
|
||||
for (uint32_t i = 0; i < sc->ctts_count; i++)
|
||||
for (uint32_t i = 0; i < sc->ctts_count; i++) {
|
||||
if (sc->ctts_data[i].count > INT_MAX - sc->sample_offsets_count)
|
||||
return AVERROR(ENOMEM);
|
||||
sc->sample_offsets_count += sc->ctts_data[i].count;
|
||||
}
|
||||
av_freep(&sc->sample_offsets);
|
||||
sc->sample_offsets = av_calloc(sc->sample_offsets_count, sizeof(*sc->sample_offsets));
|
||||
if (!sc->sample_offsets)
|
||||
@ -3969,8 +3972,11 @@ static int build_open_gop_key_points(AVStream *st)
|
||||
/* Build a list of open-GOP key samples */
|
||||
sc->open_key_samples_count = 0;
|
||||
for (uint32_t i = 0; i < sc->sync_group_count; i++)
|
||||
if (sc->sync_group[i].index == cra_index)
|
||||
if (sc->sync_group[i].index == cra_index) {
|
||||
if (sc->sync_group[i].count > INT_MAX - sc->open_key_samples_count)
|
||||
return AVERROR(ENOMEM);
|
||||
sc->open_key_samples_count += sc->sync_group[i].count;
|
||||
}
|
||||
av_freep(&sc->open_key_samples);
|
||||
sc->open_key_samples = av_calloc(sc->open_key_samples_count, sizeof(*sc->open_key_samples));
|
||||
if (!sc->open_key_samples)
|
||||
@ -3981,6 +3987,8 @@ static int build_open_gop_key_points(AVStream *st)
|
||||
if (sg->index == cra_index)
|
||||
for (uint32_t j = 0; j < sg->count; j++)
|
||||
sc->open_key_samples[k++] = sample_id;
|
||||
if (sg->count > INT_MAX - sample_id)
|
||||
return AVERROR_PATCHWELCOME;
|
||||
sample_id += sg->count;
|
||||
}
|
||||
|
||||
|
@ -50,26 +50,32 @@ static int subviewer_probe(const AVProbeData *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_multiplier(int e) {
|
||||
switch (e) {
|
||||
case 1 : return 100;
|
||||
case 2 : return 10;
|
||||
case 3 : return 1;
|
||||
default : return -1;
|
||||
}
|
||||
}
|
||||
|
||||
static int read_ts(const char *s, int64_t *start, int *duration)
|
||||
{
|
||||
int64_t end;
|
||||
int hh1, mm1, ss1, ms1;
|
||||
int hh2, mm2, ss2, ms2;
|
||||
int multiplier = 1;
|
||||
int multiplier1, multiplier2;
|
||||
int ms1p1, ms1p2, ms2p1, ms2p2;
|
||||
|
||||
if (sscanf(s, "%u:%u:%u.%2u,%u:%u:%u.%2u",
|
||||
&hh1, &mm1, &ss1, &ms1, &hh2, &mm2, &ss2, &ms2) == 8) {
|
||||
multiplier = 10;
|
||||
} else if (sscanf(s, "%u:%u:%u.%1u,%u:%u:%u.%1u",
|
||||
&hh1, &mm1, &ss1, &ms1, &hh2, &mm2, &ss2, &ms2) == 8) {
|
||||
multiplier = 100;
|
||||
}
|
||||
if (sscanf(s, "%u:%u:%u.%u,%u:%u:%u.%u",
|
||||
&hh1, &mm1, &ss1, &ms1, &hh2, &mm2, &ss2, &ms2) == 8) {
|
||||
ms1 = FFMIN(ms1, 999);
|
||||
ms2 = FFMIN(ms2, 999);
|
||||
end = (hh2*3600LL + mm2*60LL + ss2) * 1000LL + ms2 * multiplier;
|
||||
*start = (hh1*3600LL + mm1*60LL + ss1) * 1000LL + ms1 * multiplier;
|
||||
if (sscanf(s, "%u:%u:%u.%n%u%n,%u:%u:%u.%n%u%n",
|
||||
&hh1, &mm1, &ss1, &ms1p1, &ms1, &ms1p2, &hh2, &mm2, &ss2, &ms2p1, &ms2, &ms2p2) == 8) {
|
||||
multiplier1 = get_multiplier(ms1p2 - ms1p1);
|
||||
multiplier2 = get_multiplier(ms2p2 - ms2p1);
|
||||
if (multiplier1 <= 0 ||multiplier2 <= 0)
|
||||
return -1;
|
||||
|
||||
end = (hh2*3600LL + mm2*60LL + ss2) * 1000LL + ms2 * multiplier2;
|
||||
*start = (hh1*3600LL + mm1*60LL + ss1) * 1000LL + ms1 * multiplier1;
|
||||
*duration = end - *start;
|
||||
return 0;
|
||||
}
|
||||
|
@ -385,8 +385,8 @@ av_cold int swr_init(struct SwrContext *s){
|
||||
goto fail;
|
||||
}
|
||||
|
||||
av_channel_layout_describe(&s->out_ch_layout, l2, sizeof(l2));
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
av_channel_layout_describe(&s->out_ch_layout, l1, sizeof(l1));
|
||||
if (s->out_ch_layout.order != AV_CHANNEL_ORDER_UNSPEC && s->out.ch_count != s->out_ch_layout.nb_channels) {
|
||||
av_log(s, AV_LOG_ERROR, "Output channel layout %s mismatches specified channel count %d\n", l2, s->out.ch_count);
|
||||
ret = AVERROR(EINVAL);
|
||||
|
@ -362,6 +362,7 @@ lavf_container_fate()
|
||||
}
|
||||
|
||||
lavf_image(){
|
||||
no_file_checksums="$3"
|
||||
nb_frames=13
|
||||
t="${test#lavf-}"
|
||||
outdir="tests/data/images/$t"
|
||||
@ -374,9 +375,11 @@ lavf_image(){
|
||||
done
|
||||
fi
|
||||
run_avconv $DEC_OPTS -f image2 -c:v pgmyuv -i $raw_src $1 "$ENC_OPTS -metadata title=lavftest" -vf scale -frames $nb_frames -y -qscale 10 $target_path/$file
|
||||
do_md5sum ${outdir}/02.$t
|
||||
if [ -z "$no_file_checksums" ]; then
|
||||
do_md5sum ${outdir}/02.$t
|
||||
echo $(wc -c ${outdir}/02.$t)
|
||||
fi
|
||||
do_avconv_crc $file -auto_conversion_filters $DEC_OPTS $2 -i $target_path/$file $2
|
||||
echo $(wc -c ${outdir}/02.$t)
|
||||
}
|
||||
|
||||
lavf_image2pipe(){
|
||||
|
@ -3,4 +3,4 @@ fate-imf-cpl-with-repeat: CMD = framecrc -f imf -i $(TARGET_SAMPLES)/imf/countdo
|
||||
|
||||
FATE_SAMPLES_FFMPEG-$(CONFIG_IMF_DEMUXER) += $(FATE_IMF)
|
||||
|
||||
fate-imf: $(FATE_IMF)
|
||||
fate-imfdec: $(FATE_IMF)
|
||||
|
@ -59,18 +59,18 @@ $(FATE_LAVF_IMAGES): CMD = lavf_image
|
||||
$(FATE_LAVF_IMAGES): REF = $(SRC_PATH)/tests/ref/lavf/$(@:fate-lavf-%=%)
|
||||
$(FATE_LAVF_IMAGES): $(VREF)
|
||||
|
||||
fate-lavf-none.grayf32le.exr: CMD = lavf_image "-compression none -pix_fmt grayf32le"
|
||||
fate-lavf-rle.grayf32le.exr: CMD = lavf_image "-compression rle -pix_fmt grayf32le"
|
||||
fate-lavf-zip1.grayf32le.exr: CMD = lavf_image "-compression zip1 -pix_fmt grayf32le"
|
||||
fate-lavf-zip16.grayf32le.exr: CMD = lavf_image "-compression zip16 -pix_fmt grayf32le"
|
||||
fate-lavf-none.gbrpf32le.exr: CMD = lavf_image "-compression none -pix_fmt gbrpf32le"
|
||||
fate-lavf-rle.gbrpf32le.exr: CMD = lavf_image "-compression rle -pix_fmt gbrpf32le"
|
||||
fate-lavf-zip1.gbrpf32le.exr: CMD = lavf_image "-compression zip1 -pix_fmt gbrpf32le"
|
||||
fate-lavf-zip16.gbrpf32le.exr: CMD = lavf_image "-compression zip16 -pix_fmt gbrpf32le"
|
||||
fate-lavf-none.gbrapf32le.exr: CMD = lavf_image "-compression none -pix_fmt gbrapf32le"
|
||||
fate-lavf-rle.gbrapf32le.exr: CMD = lavf_image "-compression rle -pix_fmt gbrapf32le"
|
||||
fate-lavf-zip1.gbrapf32le.exr: CMD = lavf_image "-compression zip1 -pix_fmt gbrapf32le"
|
||||
fate-lavf-zip16.gbrapf32le.exr: CMD = lavf_image "-compression zip16 -pix_fmt gbrapf32le"
|
||||
fate-lavf-none.grayf32le.exr: CMD = lavf_image "-compression none -pix_fmt grayf32le" "" "no_file_checksums"
|
||||
fate-lavf-rle.grayf32le.exr: CMD = lavf_image "-compression rle -pix_fmt grayf32le" "" "no_file_checksums"
|
||||
fate-lavf-zip1.grayf32le.exr: CMD = lavf_image "-compression zip1 -pix_fmt grayf32le" "" "no_file_checksums"
|
||||
fate-lavf-zip16.grayf32le.exr: CMD = lavf_image "-compression zip16 -pix_fmt grayf32le" "" "no_file_checksums"
|
||||
fate-lavf-none.gbrpf32le.exr: CMD = lavf_image "-compression none -pix_fmt gbrpf32le" "" "no_file_checksums"
|
||||
fate-lavf-rle.gbrpf32le.exr: CMD = lavf_image "-compression rle -pix_fmt gbrpf32le" "" "no_file_checksums"
|
||||
fate-lavf-zip1.gbrpf32le.exr: CMD = lavf_image "-compression zip1 -pix_fmt gbrpf32le" "" "no_file_checksums"
|
||||
fate-lavf-zip16.gbrpf32le.exr: CMD = lavf_image "-compression zip16 -pix_fmt gbrpf32le" "" "no_file_checksums"
|
||||
fate-lavf-none.gbrapf32le.exr: CMD = lavf_image "-compression none -pix_fmt gbrapf32le" "" "no_file_checksums"
|
||||
fate-lavf-rle.gbrapf32le.exr: CMD = lavf_image "-compression rle -pix_fmt gbrapf32le" "" "no_file_checksums"
|
||||
fate-lavf-zip1.gbrapf32le.exr: CMD = lavf_image "-compression zip1 -pix_fmt gbrapf32le" "" "no_file_checksums"
|
||||
fate-lavf-zip16.gbrapf32le.exr: CMD = lavf_image "-compression zip16 -pix_fmt gbrapf32le" "" "no_file_checksums"
|
||||
fate-lavf-jpg: CMD = lavf_image "-pix_fmt yuvj420p"
|
||||
fate-lavf-tiff: CMD = lavf_image "-pix_fmt rgb24"
|
||||
fate-lavf-gbrp10le.dpx: CMD = lavf_image "-pix_fmt gbrp10le" "-pix_fmt gbrp10le"
|
||||
|
@ -1,3 +1,3 @@
|
||||
71f4d64a6b3c71f43a4eff526f84841c *tests/data/images/bmp/02.bmp
|
||||
tests/data/images/bmp/%02d.bmp CRC=0xe6c71946
|
||||
304182 tests/data/images/bmp/02.bmp
|
||||
tests/data/images/bmp/%02d.bmp CRC=0xe6c71946
|
||||
|
@ -1,3 +1,3 @@
|
||||
4c8880d5835ffb5fe37c1ed8c8d404de *tests/data/images/dpx/02.dpx
|
||||
tests/data/images/dpx/%02d.dpx CRC=0x6da01946
|
||||
305792 tests/data/images/dpx/02.dpx
|
||||
tests/data/images/dpx/%02d.dpx CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
7ca935d5d5e00c54acbc85565d3039b6 *tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx
|
||||
tests/data/images/gbrp10le.dpx/%02d.gbrp10le.dpx CRC=0xe6663fba
|
||||
407168 tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx
|
||||
tests/data/images/gbrp10le.dpx/%02d.gbrp10le.dpx CRC=0xe6663fba
|
||||
|
@ -1,3 +1,3 @@
|
||||
a4cfea1797c928f2eff73573e559675d *tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx
|
||||
tests/data/images/gbrp12le.dpx/%02d.gbrp12le.dpx CRC=0x1c755633
|
||||
609920 tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx
|
||||
tests/data/images/gbrp12le.dpx/%02d.gbrp12le.dpx CRC=0x1c755633
|
||||
|
@ -1,3 +1,3 @@
|
||||
6d470f8d6018b95b45afafc14b7d161a *tests/data/images/gbrpf32be.pfm/02.gbrpf32be.pfm
|
||||
tests/data/images/gbrpf32be.pfm/%02d.gbrpf32be.pfm CRC=0x4b73053f
|
||||
1216532 tests/data/images/gbrpf32be.pfm/02.gbrpf32be.pfm
|
||||
tests/data/images/gbrpf32be.pfm/%02d.gbrpf32be.pfm CRC=0x4b73053f
|
||||
|
@ -1,3 +1,3 @@
|
||||
892c5a05e1cbb3d2f7761d51e18b9c4c *tests/data/images/gbrpf32le.pfm/02.gbrpf32le.pfm
|
||||
tests/data/images/gbrpf32le.pfm/%02d.gbrpf32le.pfm CRC=0x95e1053f
|
||||
1216533 tests/data/images/gbrpf32le.pfm/02.gbrpf32le.pfm
|
||||
tests/data/images/gbrpf32le.pfm/%02d.gbrpf32le.pfm CRC=0x95e1053f
|
||||
|
@ -1,3 +1,3 @@
|
||||
35cb9e42b2d3181be494f8693af1ddea *tests/data/images/gray.pam/02.gray.pam
|
||||
tests/data/images/gray.pam/%02d.gray.pam CRC=0x0ff205be
|
||||
101445 tests/data/images/gray.pam/02.gray.pam
|
||||
tests/data/images/gray.pam/%02d.gray.pam CRC=0x0ff205be
|
||||
|
@ -1,3 +1,3 @@
|
||||
85e9b8b814a1dea71d143aac2e487037 *tests/data/images/gray.xwd/02.gray.xwd
|
||||
tests/data/images/gray.xwd/%02d.gray.xwd CRC=0x0ff205be
|
||||
101487 tests/data/images/gray.xwd/02.gray.xwd
|
||||
tests/data/images/gray.xwd/%02d.gray.xwd CRC=0x0ff205be
|
||||
|
@ -1,3 +1,3 @@
|
||||
740eb42157af9e9eed46b70ba6a6cf4d *tests/data/images/gray16be.pam/02.gray16be.pam
|
||||
tests/data/images/gray16be.pam/%02d.gray16be.pam CRC=0x893f10ef
|
||||
202823 tests/data/images/gray16be.pam/02.gray16be.pam
|
||||
tests/data/images/gray16be.pam/%02d.gray16be.pam CRC=0x893f10ef
|
||||
|
@ -1,3 +1,3 @@
|
||||
6cf54c13aa407b77547cf6dfe23ecba3 *tests/data/images/gray16be.png/02.gray16be.png
|
||||
tests/data/images/gray16be.png/%02d.gray16be.png CRC=0x893f10ef
|
||||
47365 tests/data/images/gray16be.png/02.gray16be.png
|
||||
tests/data/images/gray16be.png/%02d.gray16be.png CRC=0x893f10ef
|
||||
|
@ -1,3 +1,3 @@
|
||||
0f6df0d68d7dd30e67386b1255f443c9 *tests/data/images/grayf32be.pfm/02.grayf32be.pfm
|
||||
tests/data/images/grayf32be.pfm/%02d.grayf32be.pfm CRC=0xe3fda443
|
||||
405524 tests/data/images/grayf32be.pfm/02.grayf32be.pfm
|
||||
tests/data/images/grayf32be.pfm/%02d.grayf32be.pfm CRC=0xe3fda443
|
||||
|
@ -1,3 +1,3 @@
|
||||
145715872a894b1fde0105d8a0106191 *tests/data/images/grayf32le.pfm/02.grayf32le.pfm
|
||||
tests/data/images/grayf32le.pfm/%02d.grayf32le.pfm CRC=0x5443a443
|
||||
405525 tests/data/images/grayf32le.pfm/02.grayf32le.pfm
|
||||
tests/data/images/grayf32le.pfm/%02d.grayf32le.pfm CRC=0x5443a443
|
||||
|
@ -1,3 +1,3 @@
|
||||
1e7c6d937f21c045e0b238a83f62f3c5 *tests/data/images/jpg/02.jpg
|
||||
tests/data/images/jpg/%02d.jpg CRC=0xe3509f33
|
||||
26037 tests/data/images/jpg/02.jpg
|
||||
tests/data/images/jpg/%02d.jpg CRC=0xe3509f33
|
||||
|
@ -1,3 +1,3 @@
|
||||
d2f5eb2f959ca3a90c02f1887b6e0c4f *tests/data/images/monob.pam/02.monob.pam
|
||||
tests/data/images/monob.pam/%02d.monob.pam CRC=0xab19200d
|
||||
101447 tests/data/images/monob.pam/02.monob.pam
|
||||
tests/data/images/monob.pam/%02d.monob.pam CRC=0xab19200d
|
||||
|
@ -1,3 +1,3 @@
|
||||
796e2e309ac0844cfb2f4959816508ee *tests/data/images/monow.xwd/02.monow.xwd
|
||||
tests/data/images/monow.xwd/%02d.monow.xwd CRC=0xc9a20204
|
||||
12783 tests/data/images/monow.xwd/02.monow.xwd
|
||||
tests/data/images/monow.xwd/%02d.monow.xwd CRC=0xc9a20204
|
||||
|
@ -1,3 +1 @@
|
||||
c586035e67f9ba7f2a3777933b5b22a0 *tests/data/images/none.gbrapf32le.exr/02.none.gbrapf32le.exr
|
||||
tests/data/images/none.gbrapf32le.exr/%02d.none.gbrapf32le.exr CRC=0x068aca4e
|
||||
1627003 tests/data/images/none.gbrapf32le.exr/02.none.gbrapf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
10f42423c6585fe5053c5457fba7b235 *tests/data/images/none.gbrpf32le.exr/02.none.gbrpf32le.exr
|
||||
tests/data/images/none.gbrpf32le.exr/%02d.none.gbrpf32le.exr CRC=0x95e1053f
|
||||
1221481 tests/data/images/none.gbrpf32le.exr/02.none.gbrpf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
8aa28b10bf2591b7030b78bc29907293 *tests/data/images/none.grayf32le.exr/02.none.grayf32le.exr
|
||||
tests/data/images/none.grayf32le.exr/%02d.none.grayf32le.exr CRC=0x5443a443
|
||||
410437 tests/data/images/none.grayf32le.exr/02.none.grayf32le.exr
|
||||
|
@ -1,3 +1,3 @@
|
||||
0dce5565222cf0f8b309467f279aecd2 *tests/data/images/pam/02.pam
|
||||
tests/data/images/pam/%02d.pam CRC=0x6da01946
|
||||
304191 tests/data/images/pam/02.pam
|
||||
tests/data/images/pam/%02d.pam CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
c4faf65ecc812ec8412cc26140c13bd5 *tests/data/images/pcx/02.pcx
|
||||
tests/data/images/pcx/%02d.pcx CRC=0x6da01946
|
||||
364147 tests/data/images/pcx/02.pcx
|
||||
tests/data/images/pcx/%02d.pcx CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
cc777c5fc4d116d4c5a996eac8d3133e *tests/data/images/pgm/02.pgm
|
||||
tests/data/images/pgm/%02d.pgm CRC=0x0ff205be
|
||||
101391 tests/data/images/pgm/02.pgm
|
||||
tests/data/images/pgm/%02d.pgm CRC=0x0ff205be
|
||||
|
@ -1,3 +1,3 @@
|
||||
2af72da4468e61a37c220b25cb28618a *tests/data/images/png/02.png
|
||||
tests/data/images/png/%02d.png CRC=0x6da01946
|
||||
248633 tests/data/images/png/02.png
|
||||
tests/data/images/png/%02d.png CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
16d5dadf0b362fc8ba3cb676c5dde985 *tests/data/images/ppm/02.ppm
|
||||
tests/data/images/ppm/%02d.ppm CRC=0x6da01946
|
||||
304143 tests/data/images/ppm/02.ppm
|
||||
tests/data/images/ppm/%02d.ppm CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
3887a856d13f6444e213e9e268d58d55 *tests/data/images/qoi/02.qoi
|
||||
tests/data/images/qoi/%02d.qoi CRC=0x6da01946
|
||||
307658 tests/data/images/qoi/02.qoi
|
||||
tests/data/images/qoi/%02d.qoi CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
032538f0313b4f240b44a5bef115f5bf *tests/data/images/rgb48be.pam/02.rgb48be.pam
|
||||
tests/data/images/rgb48be.pam/%02d.rgb48be.pam CRC=0x5984c023
|
||||
608321 tests/data/images/rgb48be.pam/02.rgb48be.pam
|
||||
tests/data/images/rgb48be.pam/%02d.rgb48be.pam CRC=0x5984c023
|
||||
|
@ -1,3 +1,3 @@
|
||||
b4e38244c97debe3f528e7d1adb283ef *tests/data/images/rgb48be.png/02.rgb48be.png
|
||||
tests/data/images/rgb48be.png/%02d.rgb48be.png CRC=0x5984c023
|
||||
511900 tests/data/images/rgb48be.png/02.rgb48be.png
|
||||
tests/data/images/rgb48be.png/%02d.rgb48be.png CRC=0x5984c023
|
||||
|
@ -1,3 +1,3 @@
|
||||
075963c3c08978b6a20555ba09161434 *tests/data/images/rgb48le.dpx/02.rgb48le.dpx
|
||||
tests/data/images/rgb48le.dpx/%02d.rgb48le.dpx CRC=0xe5b9c023
|
||||
609920 tests/data/images/rgb48le.dpx/02.rgb48le.dpx
|
||||
tests/data/images/rgb48le.dpx/%02d.rgb48le.dpx CRC=0xe5b9c023
|
||||
|
@ -1,3 +1,3 @@
|
||||
b9f22728f8ff393bf30cf6cbd624fa95 *tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx
|
||||
tests/data/images/rgb48le_10.dpx/%02d.rgb48le_10.dpx CRC=0xf38d5830
|
||||
407168 tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx
|
||||
tests/data/images/rgb48le_10.dpx/%02d.rgb48le_10.dpx CRC=0xf38d5830
|
||||
|
@ -1,3 +1,3 @@
|
||||
fe1af954966a40c2cd35fc27094ff823 *tests/data/images/rgb4_byte.xwd/02.rgb4_byte.xwd
|
||||
tests/data/images/rgb4_byte.xwd/%02d.rgb4_byte.xwd CRC=0xce042dcc
|
||||
104559 tests/data/images/rgb4_byte.xwd/02.rgb4_byte.xwd
|
||||
tests/data/images/rgb4_byte.xwd/%02d.rgb4_byte.xwd CRC=0xce042dcc
|
||||
|
@ -1,3 +1,3 @@
|
||||
1300938325d5ac12caa09a43bd58f37c *tests/data/images/rgb555be.xwd/02.rgb555be.xwd
|
||||
tests/data/images/rgb555be.xwd/%02d.rgb555be.xwd CRC=0x14555d6e
|
||||
202863 tests/data/images/rgb555be.xwd/02.rgb555be.xwd
|
||||
tests/data/images/rgb555be.xwd/%02d.rgb555be.xwd CRC=0x14555d6e
|
||||
|
@ -1,3 +1,3 @@
|
||||
c0866e9e710fce735423594a93bee604 *tests/data/images/rgb565be.xwd/02.rgb565be.xwd
|
||||
tests/data/images/rgb565be.xwd/%02d.rgb565be.xwd CRC=0x53209216
|
||||
202863 tests/data/images/rgb565be.xwd/02.rgb565be.xwd
|
||||
tests/data/images/rgb565be.xwd/%02d.rgb565be.xwd CRC=0x53209216
|
||||
|
@ -1,3 +1,3 @@
|
||||
c6f3cb7c45f7238474a89d2ad61a1caf *tests/data/images/rgb8.xwd/02.rgb8.xwd
|
||||
tests/data/images/rgb8.xwd/%02d.rgb8.xwd CRC=0xf217a95e
|
||||
104559 tests/data/images/rgb8.xwd/02.rgb8.xwd
|
||||
tests/data/images/rgb8.xwd/%02d.rgb8.xwd CRC=0xf217a95e
|
||||
|
@ -1,3 +1,3 @@
|
||||
2ed31ca8d8de560afb3e0fd7a873cde5 *tests/data/images/rgba.pam/02.rgba.pam
|
||||
tests/data/images/rgba.pam/%02d.rgba.pam CRC=0xf07d29cd
|
||||
405573 tests/data/images/rgba.pam/02.rgba.pam
|
||||
tests/data/images/rgba.pam/%02d.rgba.pam CRC=0xf07d29cd
|
||||
|
@ -1,3 +1,3 @@
|
||||
1cdb43599c956dc8563f1e09fac5df00 *tests/data/images/rgba.xwd/02.rgba.xwd
|
||||
tests/data/images/rgba.xwd/%02d.rgba.xwd CRC=0xf07d29cd
|
||||
405615 tests/data/images/rgba.xwd/02.rgba.xwd
|
||||
tests/data/images/rgba.xwd/%02d.rgba.xwd CRC=0xf07d29cd
|
||||
|
@ -1,3 +1,3 @@
|
||||
545603630f30dec2768c8ae8d12eb8ea *tests/data/images/rgba64le.dpx/02.rgba64le.dpx
|
||||
tests/data/images/rgba64le.dpx/%02d.rgba64le.dpx CRC=0xe72ce131
|
||||
812672 tests/data/images/rgba64le.dpx/02.rgba64le.dpx
|
||||
tests/data/images/rgba64le.dpx/%02d.rgba64le.dpx CRC=0xe72ce131
|
||||
|
@ -1,3 +1 @@
|
||||
94398a5ce98bb7b1b78b2b807306f6d7 *tests/data/images/rle.gbrapf32le.exr/02.rle.gbrapf32le.exr
|
||||
tests/data/images/rle.gbrapf32le.exr/%02d.rle.gbrapf32le.exr CRC=0x068aca4e
|
||||
1436849 tests/data/images/rle.gbrapf32le.exr/02.rle.gbrapf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
fed878e1f4391314c37088085942e572 *tests/data/images/rle.gbrpf32le.exr/02.rle.gbrpf32le.exr
|
||||
tests/data/images/rle.gbrpf32le.exr/%02d.rle.gbrpf32le.exr CRC=0x95e1053f
|
||||
1208298 tests/data/images/rle.gbrpf32le.exr/02.rle.gbrpf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
2841f839cb5aa98bb7aded800dda7cc7 *tests/data/images/rle.grayf32le.exr/02.rle.grayf32le.exr
|
||||
tests/data/images/rle.grayf32le.exr/%02d.rle.grayf32le.exr CRC=0x5443a443
|
||||
410437 tests/data/images/rle.grayf32le.exr/02.rle.grayf32le.exr
|
||||
|
@ -1,3 +1,3 @@
|
||||
d446e540a7c18da5fd3cc0e9942cd46f *tests/data/images/sgi/02.sgi
|
||||
tests/data/images/sgi/%02d.sgi CRC=0x6da01946
|
||||
307287 tests/data/images/sgi/02.sgi
|
||||
tests/data/images/sgi/%02d.sgi CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
07518bcb0841bc677ce6aea8464ea240 *tests/data/images/sun/02.sun
|
||||
tests/data/images/sun/%02d.sun CRC=0xe6c71946
|
||||
304123 tests/data/images/sun/02.sun
|
||||
tests/data/images/sun/%02d.sun CRC=0xe6c71946
|
||||
|
@ -1,3 +1,3 @@
|
||||
c0305c53e6d79d4ed9f35f04f671246c *tests/data/images/tga/02.tga
|
||||
tests/data/images/tga/%02d.tga CRC=0xe6c71946
|
||||
304172 tests/data/images/tga/02.tga
|
||||
tests/data/images/tga/%02d.tga CRC=0xe6c71946
|
||||
|
@ -1,3 +1,3 @@
|
||||
b3299346a8959553a437e486d8f3bf76 *tests/data/images/tiff/02.tiff
|
||||
tests/data/images/tiff/%02d.tiff CRC=0x6da01946
|
||||
307131 tests/data/images/tiff/02.tiff
|
||||
tests/data/images/tiff/%02d.tiff CRC=0x6da01946
|
||||
|
@ -1,3 +1,3 @@
|
||||
83ed197cc88f382d9253365ffef70ec5 *tests/data/images/xbm/02.xbm
|
||||
tests/data/images/xbm/%02d.xbm CRC=0xc9a20204
|
||||
76410 tests/data/images/xbm/02.xbm
|
||||
tests/data/images/xbm/%02d.xbm CRC=0xc9a20204
|
||||
|
@ -1,3 +1,3 @@
|
||||
50baa5560b7d1aa3188b19c1162bf7dc *tests/data/images/xwd/02.xwd
|
||||
tests/data/images/xwd/%02d.xwd CRC=0x6da01946
|
||||
304239 tests/data/images/xwd/02.xwd
|
||||
tests/data/images/xwd/%02d.xwd CRC=0x6da01946
|
||||
|
@ -1,3 +1 @@
|
||||
9fca73aac1a2e38969bed55929da48b4 *tests/data/images/zip1.gbrapf32le.exr/02.zip1.gbrapf32le.exr
|
||||
tests/data/images/zip1.gbrapf32le.exr/%02d.zip1.gbrapf32le.exr CRC=0x068aca4e
|
||||
902782 tests/data/images/zip1.gbrapf32le.exr/02.zip1.gbrapf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
a405ee4328719c53f97d351b5910e82b *tests/data/images/zip1.gbrpf32le.exr/02.zip1.gbrpf32le.exr
|
||||
tests/data/images/zip1.gbrpf32le.exr/%02d.zip1.gbrpf32le.exr CRC=0x95e1053f
|
||||
897319 tests/data/images/zip1.gbrpf32le.exr/02.zip1.gbrpf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
76fe15b4e0b735a6318ca273ff52fb58 *tests/data/images/zip1.grayf32le.exr/02.zip1.grayf32le.exr
|
||||
tests/data/images/zip1.grayf32le.exr/%02d.zip1.grayf32le.exr CRC=0x5443a443
|
||||
91044 tests/data/images/zip1.grayf32le.exr/02.zip1.grayf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
8beb8db200e658e74fdd4ed4c4ca9214 *tests/data/images/zip16.gbrapf32le.exr/02.zip16.gbrapf32le.exr
|
||||
tests/data/images/zip16.gbrapf32le.exr/%02d.zip16.gbrapf32le.exr CRC=0x068aca4e
|
||||
807513 tests/data/images/zip16.gbrapf32le.exr/02.zip16.gbrapf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
4bc7e2640ea086b7fc31cbcd4fff19f5 *tests/data/images/zip16.gbrpf32le.exr/02.zip16.gbrpf32le.exr
|
||||
tests/data/images/zip16.gbrpf32le.exr/%02d.zip16.gbrpf32le.exr CRC=0x95e1053f
|
||||
796693 tests/data/images/zip16.gbrpf32le.exr/02.zip16.gbrpf32le.exr
|
||||
|
@ -1,3 +1 @@
|
||||
5d5def6a4f16cef1122280d80c7c527d *tests/data/images/zip16.grayf32le.exr/02.zip16.grayf32le.exr
|
||||
tests/data/images/zip16.grayf32le.exr/%02d.zip16.grayf32le.exr CRC=0x5443a443
|
||||
63997 tests/data/images/zip16.grayf32le.exr/02.zip16.grayf32le.exr
|
||||
|
Loading…
Reference in New Issue
Block a user