From cd4bfe3a50ee6db098d4345e972507f8eb0d1ac9 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 5 May 2013 07:59:46 +0200 Subject: [PATCH 1/2] FATE: use a less ambiguous end time for filter-trim-time test 0.1 seconds at 25 fps is exactly 2.5 frames, which may be rounded either to 2 or 3 on different platforms. --- tests/fate/filter-video.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak index ed4c70af15..f4e813c707 100644 --- a/tests/fate/filter-video.mak +++ b/tests/fate/filter-video.mak @@ -52,7 +52,7 @@ FATE_TRIM += fate-filter-trim-mixed fate-filter-trim-mixed: CMD = framecrc -i $(SRC) -vf trim=start=0.2:end=0.4:start_frame=1:end_frame=3 FATE_TRIM += fate-filter-trim-time -fate-filter-trim-time: CMD = framecrc -i $(SRC) -vf trim=0:0.1 +fate-filter-trim-time: CMD = framecrc -i $(SRC) -vf trim=0:0.09 FATE_FILTER_VSYNTH-$(CONFIG_TRIM_FILTER) += $(FATE_TRIM) From e0c53c3408181d2e7d544eb65fc7355a79438dfe Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Mon, 6 May 2013 11:39:30 +0200 Subject: [PATCH 2/2] nut: use meaningful error values Fix the mispresented EINVAL for EOF on partial files, among the other. --- libavformat/nutdec.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 00c9ae36b7..cc5869ed48 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -183,7 +183,7 @@ static int nut_probe(AVProbeData *p) tmp = ffio_read_varlen(bc); \ if (!(check)) { \ av_log(s, AV_LOG_ERROR, "Error " #dst " is (%"PRId64")\n", tmp); \ - return -1; \ + return AVERROR_INVALIDDATA; \ } \ dst = tmp; \ } while (0) @@ -193,7 +193,7 @@ static int skip_reserved(AVIOContext *bc, int64_t pos) pos -= avio_tell(bc); if (pos < 0) { avio_seek(bc, pos, SEEK_CUR); - return -1; + return AVERROR_INVALIDDATA; } else { while (pos--) avio_r8(bc); @@ -213,7 +213,13 @@ static int decode_main_header(NUTContext *nut) end = get_packetheader(nut, bc, 1, MAIN_STARTCODE); end += avio_tell(bc); - GET_V(tmp, tmp >= 2 && tmp <= NUT_VERSION); + tmp = ffio_read_varlen(bc); + if (tmp < 2 && tmp > NUT_VERSION) { + av_log(s, AV_LOG_ERROR, "Version %"PRId64" not supported.\n", + tmp); + return AVERROR(ENOSYS); + } + GET_V(stream_count, tmp > 0 && tmp <= NUT_MAX_STREAMS); nut->max_distance = ffio_read_varlen(bc); @@ -376,7 +382,7 @@ static int decode_stream_header(NUTContext *nut) break; default: av_log(s, AV_LOG_ERROR, "unknown stream class (%d)\n", class); - return -1; + return AVERROR(ENOSYS); } if (class < 3 && st->codec->codec_id == AV_CODEC_ID_NONE) av_log(s, AV_LOG_ERROR, @@ -405,7 +411,7 @@ static int decode_stream_header(NUTContext *nut) if ((!st->sample_aspect_ratio.num) != (!st->sample_aspect_ratio.den)) { av_log(s, AV_LOG_ERROR, "invalid aspect ratio %d/%d\n", st->sample_aspect_ratio.num, st->sample_aspect_ratio.den); - return -1; + return AVERROR_INVALIDDATA; } ffio_read_varlen(bc); /* csp type */ } else if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { @@ -416,7 +422,7 @@ static int decode_stream_header(NUTContext *nut) if (skip_reserved(bc, end) || ffio_get_checksum(bc)) { av_log(s, AV_LOG_ERROR, "stream header %d checksum mismatch\n", stream_id); - return -1; + return AVERROR_INVALIDDATA; } stc->time_base = &nut->time_base[stc->time_base_id]; avpriv_set_pts_info(s->streams[stream_id], 63, stc->time_base->num, @@ -516,7 +522,7 @@ static int decode_info_header(NUTContext *nut) if (skip_reserved(bc, end) || ffio_get_checksum(bc)) { av_log(s, AV_LOG_ERROR, "info header checksum mismatch\n"); - return -1; + return AVERROR_INVALIDDATA; } return 0; } @@ -542,7 +548,7 @@ static int decode_syncpoint(NUTContext *nut, int64_t *ts, int64_t *back_ptr) if (skip_reserved(bc, end) || ffio_get_checksum(bc)) { av_log(s, AV_LOG_ERROR, "sync point checksum mismatch\n"); - return -1; + return AVERROR_INVALIDDATA; } *ts = tmp / s->nb_streams * @@ -561,13 +567,13 @@ static int find_and_decode_index(NUTContext *nut) int64_t filesize = avio_size(bc); int64_t *syncpoints; int8_t *has_keyframe; - int ret = -1; + int ret = AVERROR_INVALIDDATA; avio_seek(bc, filesize - 12, SEEK_SET); avio_seek(bc, filesize - avio_rb64(bc), SEEK_SET); if (avio_rb64(bc) != INDEX_STARTCODE) { av_log(s, AV_LOG_ERROR, "no index at the end\n"); - return -1; + return ret; } end = get_packetheader(nut, bc, 1, INDEX_STARTCODE); @@ -843,7 +849,7 @@ static int nut_read_packet(AVFormatContext *s, AVPacket *pkt) } else { frame_code = avio_r8(bc); if (bc->eof_reached) - return -1; + return AVERROR_EOF; if (frame_code == 'N') { tmp = frame_code; for (i = 1; i < 8; i++)