mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-20 21:00:41 +08:00
Add tests/api/api-enc-parser-test.c, a generic encoder+parser round-trip test that takes codec_name, width, and height on the command line (defaults: h261 176 144). Three cases are tested: garbage - a single av_parser_parse2() call on 8 bytes with no Picture Start Code; verifies out_size == 0 so the parser emits no spurious data. bulk - encodes 2 frames, concatenates the raw packets, feeds the whole buffer to a fresh parser in one call, then flushes. Verifies that exactly 2 non-empty frames come out and that the parser found the PSC boundary between them. split - the same buffer fed in two halves (chunk boundary falls inside frame 0). Verifies the parser still emits exactly 2 frames when input arrives incrementally, and that the collected bytes are identical to the bulk output (checked with memcmp). Implementation notes: avcodec_get_supported_config() selects the pixel format; chroma height uses AV_CEIL_RSHIFT with log2_chroma_h from AVPixFmtDescriptor; data[1] and data[2] are checked independently so semi-planar formats work; the encoded buffer is given AV_INPUT_BUFFER_PADDING_SIZE zero bytes at the end; parse_stream() skips the fed chunk if consumed==0 to prevent an infinite loop. Two FATE entries in tests/fate/api.mak: QCIF (176x144) and CIF (352x288), both standard H.261 resolutions. Signed-off-by: Soham Kute <officialsohamkute@gmail.com>
50 lines
2.3 KiB
Makefile
50 lines
2.3 KiB
Makefile
FATE_API_LIBAVCODEC-$(call ENCDEC, FLAC, FLAC) += fate-api-flac
|
|
fate-api-flac: $(APITESTSDIR)/api-flac-test$(EXESUF)
|
|
fate-api-flac: CMD = run $(APITESTSDIR)/api-flac-test$(EXESUF)
|
|
fate-api-flac: CMP = null
|
|
|
|
FATE_API_LIBAVCODEC-$(call ALLYES, H261_ENCODER H261_PARSER) += fate-api-enc-parser fate-api-enc-parser-cif
|
|
fate-api-enc-parser: $(APITESTSDIR)/api-enc-parser-test$(EXESUF)
|
|
fate-api-enc-parser: CMD = run $(APITESTSDIR)/api-enc-parser-test$(EXESUF) h261 176 144
|
|
fate-api-enc-parser-cif: $(APITESTSDIR)/api-enc-parser-test$(EXESUF)
|
|
fate-api-enc-parser-cif: CMD = run $(APITESTSDIR)/api-enc-parser-test$(EXESUF) h261 352 288
|
|
|
|
FATE_API_SAMPLES_LIBAVFORMAT-$(call DEMDEC, FLV, FLV) += fate-api-band
|
|
fate-api-band: $(APITESTSDIR)/api-band-test$(EXESUF)
|
|
fate-api-band: CMD = run $(APITESTSDIR)/api-band-test$(EXESUF) $(TARGET_SAMPLES)/mpeg4/resize_down-up.h263
|
|
fate-api-band: CMP = null
|
|
|
|
FATE_API_SAMPLES_LIBAVFORMAT-$(call DEMDEC, H264, H264, H264_PARSER) += fate-api-h264
|
|
fate-api-h264: $(APITESTSDIR)/api-h264-test$(EXESUF)
|
|
fate-api-h264: CMD = run $(APITESTSDIR)/api-h264-test$(EXESUF) $(TARGET_SAMPLES)/h264-conformance/SVA_NL2_E.264
|
|
|
|
FATE_API_SAMPLES_LIBAVFORMAT-$(call DEMDEC, H264, H264) += fate-api-h264-slice
|
|
fate-api-h264-slice: $(APITESTSDIR)/api-h264-slice-test$(EXESUF)
|
|
fate-api-h264-slice: CMD = run $(APITESTSDIR)/api-h264-slice-test$(EXESUF) 2 $(TARGET_SAMPLES)/h264/crew_cif.nal
|
|
|
|
FATE_API_LIBAVFORMAT-yes += $(if $(findstring fate-lavf-flv,$(FATE_LAVF_CONTAINER)),fate-api-seek)
|
|
fate-api-seek: $(APITESTSDIR)/api-seek-test$(EXESUF) fate-lavf-flv
|
|
fate-lavf-flv: KEEP_FILES ?= 1
|
|
fate-lavf-flv: CMP =
|
|
fate-api-seek: CMD = run $(APITESTSDIR)/api-seek-test$(EXESUF) $(TARGET_PATH)/tests/data/lavf/lavf.flv 0 720
|
|
fate-api-seek: CMP = null
|
|
|
|
FATE_API-$(HAVE_THREADS) += fate-api-threadmessage
|
|
fate-api-threadmessage: $(APITESTSDIR)/api-threadmessage-test$(EXESUF)
|
|
fate-api-threadmessage: CMD = run $(APITESTSDIR)/api-threadmessage-test$(EXESUF) 3 10 30 50 2 20 40
|
|
fate-api-threadmessage: CMP = null
|
|
|
|
FATE_API_SAMPLES-$(CONFIG_AVFORMAT) += $(FATE_API_SAMPLES_LIBAVFORMAT-yes)
|
|
|
|
ifdef SAMPLES
|
|
FATE_API_SAMPLES += $(FATE_API_SAMPLES-yes)
|
|
endif
|
|
|
|
FATE_API-$(CONFIG_AVCODEC) += $(FATE_API_LIBAVCODEC-yes)
|
|
FATE_API-$(CONFIG_AVFORMAT) += $(FATE_API_LIBAVFORMAT-yes)
|
|
FATE_API = $(FATE_API-yes)
|
|
|
|
FATE-yes += $(FATE_API) $(FATE_API_SAMPLES)
|
|
|
|
fate-api: $(FATE_API) $(FATE_API_SAMPLES)
|