aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/microdvddec.c
Commit message (Collapse)AuthorAgeFilesLines
* avformat/internal: Move FF_FMT_INIT_CLEANUP to demux.hAndreas Rheinhardt2024-03-261-1/+1
| | | | | | | | | and rename it to FF_INFMT_INIT_CLEANUP. This flag is demuxer-only, so this is the more appropriate place for it. This does not preclude adding internal flags common to both demuxer and muxer in the future. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/avformat: Add FFInputFormat, hide internals of AVInputFormatAndreas Rheinhardt2024-03-071-4/+5
| | | | | | | | | | | | | | | | | | | | | This commit does for AVInputFormat what commit 59c9dc82f450638a3068deeb1db5c56f6d155752 did for AVOutputFormat: It adds a new type FFInputFormat, moves all the internals of AVInputFormat to it and adds a now reduced AVInputFormat as first member. This does not affect/improve extensibility of both public or private fields for demuxers (it is still a mess due to lavd). This is possible since 50f34172e0cca2cabc5836308ec66dbf93f5f2a3 (which removed the last usage of an internal field of AVInputFormat in fftools). (Hint: tools/probetest.c accesses the internals of FFInputFormat as well, but given that it is a testing tool this is not considered a problem.) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* Revert "all: Don't set AVClass.item_name to its default value"Anton Khirnov2024-01-201-0/+1
| | | | | | | Some callers assume that item_name is always set, so this may be considered an API break. This reverts commit 0c6203c97a99f69dbaa6e4011d48c331e1111f5e.
* all: Don't set AVClass.item_name to its default valueAndreas Rheinhardt2023-12-221-1/+0
| | | | | | | | Unnecessary since acf63d5350adeae551d412db699f8ca03f7e76b9; also avoids relocations. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/microdvddec: Simplify cleanup after read_header failureAndreas Rheinhardt2021-07-071-8/+4
| | | | | | by setting the FF_FMT_INIT_CLEANUP flag. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat: Constify all muxer/demuxersAndreas Rheinhardt2021-04-271-1/+1
| | | | | | | This is possible now that the next-API is gone. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/microdvddec: use 64bit for durationsMichael Niedermayer2021-02-211-2/+2
| | | | | | | | Fixes: signed integer overflow: 7 - -2147483647 cannot be represented in type 'int' Fixes: 28036/clusterfuzz-testcase-minimized-ffmpeg_dem_MICRODVD_fuzzer-5171698751766528 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/microdvddec: skip malformed lines without frame number.Michael Niedermayer2020-06-251-1/+5
| | | | | | | | | Fixes: signed integer overflow: 1 - -9223372036854775808 cannot be represented in type 'long' Fixes: 23490/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-5133490093031424 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/microdvddec: Fix memleak upon read header failureAndreas Rheinhardt2020-06-151-5/+10
| | | | | | | | The already parsed subtitles (contained in an FFDemuxSubtitlesQueue) would leak if an error happened upon reading a subsequent subtitle or when allocating extradata. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avformat/microdvd: Use \n instead of \0 to end file headerAndreas Rheinhardt2019-12-271-4/+5
| | | | | | | | | | | | | | | | | | | | Up until now, the microdvd demuxer uses av_strdup() to allocate the extradata from a string; its length is set to strlen() + 1, i.e. including the \0 at the end. Upon remuxing, the muxer would simply copy the extradata at the beginning, including the \0. This commit changes this by not adding the \0 to the size of the extradata; the muxer now delimits extradata by inserting a \n. This required to change the subtitles-microdvd-remux FATE-test. Furthermore, the extradata is now allocated with zeroed padding. The microdvd decoder is not affected by this, as it didn't use the size of the extradata at all, but treated it as a C-string. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/microdvddec: skip empty linesPaul B Mahol2019-04-271-0/+2
|
* lavf: Constify the probe function argument.Carl Eugen Hoyos2019-03-211-1/+1
| | | | | Reviewed-by: Lauri Kasanen Reviewed-by: Tomas Härdin
* Merge commit '9200514ad8717c63f82101dc394f4378854325bf'Derek Buitenhuis2016-04-101-6/+6
| | | | | | | | | | | | | | | | * commit '9200514ad8717c63f82101dc394f4378854325bf': lavf: replace AVStream.codec with AVStream.codecpar This has been a HUGE effort from: - Derek Buitenhuis <derek.buitenhuis@gmail.com> - Hendrik Leppkes <h.leppkes@gmail.com> - wm4 <nfxjfg@googlemail.com> - Clément Bœsch <clement@stupeflix.com> - James Almer <jamrial@gmail.com> - Michael Niedermayer <michael@niedermayer.cc> - Rostislav Pehlivanov <atomnuker@gmail.com> Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* avformat/subtitles: forward log context in ff_subtitles_queue_finalize() for ↵Clément Bœsch2015-09-101-1/+1
| | | | logging
* microdvd: do not export framerate hint as subtitle packetwm42015-04-081-0/+1
| | | | | | | | | | | MicroDVD has a "hack" for specifying the video framerate the subtitle was authored against. The demuxer reads this hint correctly, but didn't skip it correctly. This was not noticed, because the exported packet has its duration set to 0, making it invisible (depending on the API user's rendering logic). Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* replace calls to url_feof() with avio_feof()James Almer2014-08-081-1/+1
| | | | | Signed-off-by: James Almer <jamrial@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* avformat/microdvd: export the declared frame ratewm42014-03-031-1/+30
| | | | | | | | | | | | | | | | | MicroDVD files are normally frame-based (i.e. there are no absolute timestamps), but can have an optional frame rate header. If this header is missing, the timestamps depend on the frame rate of the video they were created for. The demuxer will use a fallback frame rate if it's missing from the header. Currently, applications using libavformat can't know whether the time base is based on the fallback value, or if a frame rate header was present. This commit introduces a subfps AVOption for MicroDVD, and the demuxer sets it if and only if a frame rate header was present. Signed-off-by: Clément Bœsch <u@pkh.me>
* avformat/microdvd: skip BOM properlywm42014-03-031-3/+10
| | | | | | The BOM is already skipped in the probe function, but not the header read function. This could cause the header to be misparsed, such as not interpreting the FPS line.
* avformat/subtitles: add a next line jumper and use it.Clément Bœsch2013-09-081-1/+1
| | | | | | | | | | | | This fixes a bunch of possible overread in avformat with the idiom p += strcspn(p, "\n") + 1 (strcspn() can focus on the trailing '\0' if no '\n' is found, so the +1 leads to an overread). Note on lavf/matroskaenc: no extra subtitles.o Makefile dependency is added because only the header is required for ff_subtitles_next_line(). Note on lavf/mpsubdec: code gets slightly complex to avoid an infinite loop in the probing since there is no more forced increment.
* Update copyrights where my email appears with the new one.Clément Bœsch2013-09-031-1/+1
|
* lavf: remove generic index flag from text subtitles.Clément Bœsch2013-01-021-1/+0
| | | | This flag is not necessary.
* microdvd: sanitize AVPackets.Clément Bœsch2012-12-311-5/+18
| | | | | | | | | | | | | | | | | | | | Current MicroDVD AVPackets contain timing information and trailing line breaks. The data is now only composed of the markup data. Doing this consistently between text subtitles decoders allows to use different codec for various formats. For instance, MicroDVD markup is sometimes found in some VPlayer files. Also, generally speaking, the subtitles text decoders have no use of these timings (and they must not use them since it would break any user timing adjustment). Technically, this is a major ABI break. In practice, a mismatching lavf/lavc will now error out for MicroDVD decoding. Supporting both formats requires unnecessary complex and fragile code. FATE needs update because line breaks in the ASS file were "\n" (because that's what is used in the original file). ASS format expect "\r\n" line breaks; this commit fixes this issue. Also note that this "\r\n" trailing need to be moved at some point from the decoders to the ASS muxer.
* microdvd_probe: make buffer pointers constMichael Niedermayer2012-12-251-1/+2
| | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* lavf: use ff_subtitles_queue_seek() for text subtitles demuxers.Clément Bœsch2012-12-021-0/+9
|
* Merge commit '36ef5369ee9b336febc2c270f8718cec4476cb85'Michael Niedermayer2012-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '36ef5369ee9b336febc2c270f8718cec4476cb85': Replace all CODEC_ID_* with AV_CODEC_ID_* lavc: add AV prefix to codec ids. Conflicts: doc/APIchanges doc/examples/decoding_encoding.c doc/examples/muxing.c ffmpeg.c ffprobe.c ffserver.c libavcodec/8svx.c libavcodec/avcodec.h libavcodec/dnxhd_parser.c libavcodec/dvdsubdec.c libavcodec/error_resilience.c libavcodec/h263dec.c libavcodec/libvorbisenc.c libavcodec/mjpeg_parser.c libavcodec/mjpegenc.c libavcodec/mpeg12.c libavcodec/mpeg4videodec.c libavcodec/mpegvideo.c libavcodec/mpegvideo_enc.c libavcodec/pcm.c libavcodec/r210dec.c libavcodec/utils.c libavcodec/v210dec.c libavcodec/version.h libavdevice/alsa-audio-dec.c libavdevice/bktr.c libavdevice/v4l2.c libavformat/asfdec.c libavformat/asfenc.c libavformat/avformat.h libavformat/avidec.c libavformat/caf.c libavformat/electronicarts.c libavformat/flacdec.c libavformat/flvdec.c libavformat/flvenc.c libavformat/framecrcenc.c libavformat/img2.c libavformat/img2dec.c libavformat/img2enc.c libavformat/ipmovie.c libavformat/isom.c libavformat/matroska.c libavformat/matroskadec.c libavformat/matroskaenc.c libavformat/mov.c libavformat/movenc.c libavformat/mp3dec.c libavformat/mpeg.c libavformat/mpegts.c libavformat/mxf.c libavformat/mxfdec.c libavformat/mxfenc.c libavformat/nsvdec.c libavformat/nut.c libavformat/oggenc.c libavformat/pmpdec.c libavformat/rawdec.c libavformat/rawenc.c libavformat/riff.c libavformat/sdp.c libavformat/utils.c libavformat/vocenc.c libavformat/wtv.c libavformat/xmv.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
* lavf/microdvd: rewrite using subtitles queue API.Clément Bœsch2012-06-291-89/+58
|
* lavf/{srt,microdvd}: correctly raise error on avformat_new_stream() error.Clément Bœsch2012-06-151-1/+1
|
* lavf/microdvd: support events lasting to the next one.Clément Bœsch2012-05-291-3/+39
| | | | | | | | | | Example: {3350}{}this subtitle... {3390}{}...continues up to... {4000}{4500}this one. {4600}{}and now... {4800}{}...to the end of the presentation
* lavf/microdvd: set packet duration.Clément Bœsch2012-04-271-0/+11
|
* Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-01-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (71 commits) movenc: Allow writing to a non-seekable output if using empty moov movenc: Support adding isml (smooth streaming live) metadata libavcodec: Don't crash in avcodec_encode_audio if time_base isn't set sunrast: Document the different Sun Raster file format types. sunrast: Add a check for experimental type. libspeexenc: use AVSampleFormat instead of deprecated/removed SampleFormat lavf: remove disabled FF_API_SET_PTS_INFO cruft lavf: remove disabled FF_API_OLD_INTERRUPT_CB cruft lavf: remove disabled FF_API_REORDER_PRIVATE cruft lavf: remove disabled FF_API_SEEK_PUBLIC cruft lavf: remove disabled FF_API_STREAM_COPY cruft lavf: remove disabled FF_API_PRELOAD cruft lavf: remove disabled FF_API_NEW_STREAM cruft lavf: remove disabled FF_API_RTSP_URL_OPTIONS cruft lavf: remove disabled FF_API_MUXRATE cruft lavf: remove disabled FF_API_FILESIZE cruft lavf: remove disabled FF_API_TIMESTAMP cruft lavf: remove disabled FF_API_LOOP_OUTPUT cruft lavf: remove disabled FF_API_LOOP_INPUT cruft lavf: remove disabled FF_API_AVSTREAM_QUALITY cruft ... Conflicts: doc/APIchanges libavcodec/8bps.c libavcodec/avcodec.h libavcodec/libx264.c libavcodec/mjpegbdec.c libavcodec/options.c libavcodec/sunrast.c libavcodec/utils.c libavcodec/version.h libavcodec/x86/h264_deblock.asm libavdevice/libdc1394.c libavdevice/v4l2.c libavformat/avformat.h libavformat/avio.c libavformat/avio.h libavformat/aviobuf.c libavformat/dv.c libavformat/mov.c libavformat/utils.c libavformat/version.h libavformat/wtv.c libavutil/Makefile libavutil/file.c libswscale/x86/input.asm libswscale/x86/swscale_mmx.c libswscale/x86/swscale_template.c tests/ref/lavf/ffm Merged-by: Michael Niedermayer <michaelni@gmx.at>
* lavf: rename remaining av_set_pts_info() to avpriv_set_pts_info().Clément Bœsch2011-12-031-1/+1
|
* Replace remaining av_new_stream() with avformat_new_stream().Clément Bœsch2011-11-051-1/+1
|
* add MicroDVD muxer and demuxerAurelien Jacobs2011-04-041-0/+129
Signed-off-by: Aurelien Jacobs <aurel@gnuage.org>