Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-03avcodec/codec_internal: Add macro to set AVCodec.long_nameAndreas Rheinhardt
It reduces typing: Before this patch, there were 105 codecs whose long_name-definition exceeded the 80 char line length limit. Now there are only nine of them. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-18avcodec: Make init-threadsafety the defaultAndreas Rheinhardt
and remove FF_CODEC_CAP_INIT_THREADSAFE All our native codecs are already init-threadsafe (only wrappers for external libraries and hwaccels are typically not marked as init-threadsafe yet), so it is only natural for this to also be the default state. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05avcodec/codec_internal: Constify AVPacket in decode_sub cbAndreas Rheinhardt
No subtitle decoder ever modifies the AVPacket given to it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05avcodec/codec_internal: Use union for FFCodec decode/encode callbacksAndreas Rheinhardt
This is possible, because every given FFCodec has to implement exactly one of these. Doing so decreases sizeof(FFCodec) and therefore decreases the size of the binary. Notice that in case of position-independent code the decrease is in .data.rel.ro, so that this translates to decreased memory consumption. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05avcodec/codec_internal: Add FFCodec.decode_subAndreas Rheinhardt
This increases type-safety by avoiding conversions from/through void*. It also avoids the boilerplate "AVSubtitle *sub = data;" line for subtitle decoders. Its only downside is that it increases sizeof(FFCodec), yet this can be more than offset lateron. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-03-21avcodec/codec_internal: Add FFCodec, hide internal part of AVCodecAndreas Rheinhardt
Up until now, codec.h contains both public and private parts of AVCodec. This exposes the internals of AVCodec to users and leads them into the temptation of actually using them and forces us to forward-declare structures and types that users can't use at all. This commit changes this by adding a new structure FFCodec to codec_internal.h that extends AVCodec, i.e. contains the public AVCodec as first member; the private fields of AVCodec are moved to this structure, leaving codec.h clean. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-03-21avcodec/internal: Move FF_CODEC_CAP_* to a new header codec_internal.hAndreas Rheinhardt
Also move FF_CODEC_TAGS_END as well as struct AVCodecDefault. This reduces the amount of files that have to include internal.h (which comes with quite a lot of indirect inclusions), as e.g. most encoders don't need it. It is furthemore in preparation for moving the private part of AVCodec out of the public codec.h. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-03-18avcodec/ccaption_dec: Use ff_ass_add_rect2()Michael Niedermayer
Fixes: Timeout Fixes: 42258/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5540144118104064 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2021-06-19avcodec/ccaption_dec: Make real-time latency configurablePavel Koshevoy
Un-hardcode the 200ms minimum latency between emitting subtitle events so that those that wish to receive a subtitle event for every screen change could do so. The problem with delaying realtime output by any amount is that it is unknown when the next byte pair that would trigger output will happen. It may be within 200ms, or it may be several seconds later -- that's not realtime at all.
2021-05-02avcodec: Mark ff_ass_subtitle_header based decoders as init-threadsafeAndreas Rheinhardt
ff_ass_subtitle_header_full() just uses av_asprintf() and is therefore thread-safe itself. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-04-27avcodec: Constify AVCodecsAndreas Rheinhardt
Given that the AVCodec.next pointer has now been removed, most of the AVCodecs are not modified at all any more and can therefore be made const (as this patch does); the only exceptions are the very few codecs for external libraries that have a init_static_data callback. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
2020-06-23avcodec/ccaption_dec: add support for background colorsPaul B Mahol
2020-06-20avcodec/ccaption_dec: use uint8_t type for prev_cmd arrayPaul B Mahol
Commands are unsigned so be consistent.
2020-06-20avcodec/ccaption_dec: do not modify packet data in case of parity errorPaul B Mahol
To dissallow similar errors in future, make pointers const.
2020-06-20avcodec/ccaption_dec: allow selection of second field captionsPaul B Mahol
2020-06-20avcodec/ccaption_dec: rework non-real-time mode with pop-on captions by delayingPaul B Mahol
So it give similar output as visual output of real-time mode.
2020-06-17avcodec/ccaption_dec: do not modify pkt data and stop removing parity bit twicePaul B Mahol
2020-06-16avcodec/ccaption_dec: remove usage of extra bufferPaul B Mahol
2020-06-16avcodec/ccaption_dec: fix some small style issuesPaul B Mahol
2020-06-16avcodec/ccaption_dec: remove pts parameter from handle_char()Paul B Mahol
2020-06-15avcodec/ccaption_dec: add support for colorsPaul B Mahol
2020-06-13avcodec/ccaption_dec: switch active screen in end of caption earlyPaul B Mahol
Fixes dropping of last caption.
2020-06-13avcodec/ccaption_dec: remove unused arguments from functionPaul B Mahol
2020-06-13avcodec/ccaption_dec: check for error codesPaul B Mahol
2019-04-22avcodec/ccaption_dec: Add a blank like at the end to avoid rollup reading ↵Michael Niedermayer
from outside Fixes: index 20 out of bounds for type 'const char *[4][128]' Fixes: 14367/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CCAPTION_fuzzer-5718819672162304 Reviewed-by: Paul B Mahol <onemda@gmail.com> Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-01-25avcodecc/ccaption_dec: remove extra word from long codec descriptionPaul B Mahol
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-09-09avcodec/ccaption_dec: Use simple array instead of AVBufferMichael Niedermayer
This is simpler and fixes an out of array read, fixing it with AVBuffers would be more complex Fixes: e00d9e6e50e5495cc93fea41147b97bb/asan_heap-oob_12dcdbb_8798_b32a97ea722dd37bb5066812cc674552.mov Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-07-18avcodec/ccaption_dec: default rollup to row 10Aman Gupta
This ensures that captions are written towards the bottom of the screen when tuning into mid-stream. The row will be reset on the receipt of the next PAC command. Row 10 was chosen as it corresponds to the value of "0" in a PAC (see row_map in handle_pac()). Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-07-18avcodec/ccaption_dec: implement positioning for closed captionsAman Gupta
Positioning math is based on the guidelines in https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-07-17avcodec/ccaption_dec: change write_char() to void as return value is unusedAman Gupta
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-28avcodec/ccaption_dec: Fix mixed declaration and statement.Michael Niedermayer
Found-by: ubitux Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-28avcodec/ccaption_dec: implement tab offset commandsAman Gupta
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-04-02lavc/ccaption_dec: remove usage of avctx->time_baseClément Bœsch
lavc/utils already rescales avpkt->pts to sub->pts in AV_TIME_BASE_Q before calling the decode callback. This prevents from rescaling again into the decoder, and avoid the use of avctx->time_base which will disappear in the incoming codecpar merge. This commit also replaces the use of "20 centisecond" (ass time base) with "200 ms".
2016-02-26lavc/options: add ass_ro_flush_noop to flags2Clément Bœsch
2016-02-26lavc: allow subtitle text format to be ASS without timingClément Bœsch
2016-02-17lavc/ccaption_dec: implement special and extended character setsAman Gupta
character sets implemented as defined in https://en.wikipedia.org/wiki/EIA-608#Characters
2016-02-17lavc/ccaption_dec: do not ignore repeated character commandsAman Gupta
control codes in a cc stream can be repeated, and must be ignored. however, repeated characters must not be ignored. the code attempted to wipe prev_cmd in handle_char to allow repeated characters to be processed, but prev_cmd would previously get reset _after_ handle_char() i also moved the prev_cmd reset out from handle_char() so it can be re-used for special character sets, which _must_ be ignored when repeated.
2016-01-19avcodec/ccaption_dec: Fix mixed declarations and codeMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-01-15lavc/ccaption_dec: clear all unused rows during rollupAman Gupta
Sometimes rollup captions can move around the screen. This fixes "ghost" captions from below the current rollup area from continuing to be captured when a rollup moves higher up on the screen.
2016-01-15lavc/ccaption_dec: clean up whitespaceAman Gupta
2016-01-15lavc/ccaption_dec: implement real_time optionAman Gupta
This new mode is useful for realtime decoding of closed captions so they can be display along with mpeg2 frames. Closed caption streams contain two major types of captions: - POPON captions, which are buffered off-screen and displayed only after EOC (end of caption, aka display buffer) - PAINTON/ROLLUP captions, which are written to the display as soon as they arrive. In a typical real-time eia608 decoder, commands like EOC (end of caption; display buffer), EDM (erase display memory) and EBM (erase buffered memory) perform their expected functions as soon as the commands are processed. This is implemented in the real_time branches added in this commit. Before this commit, and in the !real_time branches after this commit, the decoder cleverly implements its own version of the decoder which is specifically geared towards buffered decoding. It does so by actively ignoring commands like EBM (erase buffered memory), and then re-using the non-display buffer to hold the previous caption while the new one is received. This is the opposite of the real-time decoder, which uses the non-display buffer to hold the new caption while the display buffer is still showing the current caption. In addition to ignoring EBM, the buffered decoder also has custom implementations for EDM and EOC. An EDM (erase display memory) command flushes the existing contents before clearing the screen, and EOC similarly always flushes the active buffer (the previous subtitle) before flipping buffers.
2016-01-15lavc/ccaption_dec: flush context on seekAman Gupta
2016-01-10lavc/ccaption_dec: improve default styleClément Bœsch
Use monospaced font, and a black box outline.
2016-01-10lavc/ccaption_dec: fix ASS tagsClément Bœsch
2016-01-09lavc/ccaption_dec: simplify rollup casesClément Bœsch
2016-01-09lavc/ccaption_dec: check for bprint completeness outside the loopClément Bœsch
2016-01-09lavc/ccaption_dec: mark row and font as const in capture_screen()Clément Bœsch
2016-01-09lavc/ccaption_dec: fix mixed declarations and code warningClément Bœsch
2016-01-09lavc/ccaption_dec: check for bprint completeness only at the endClément Bœsch
2016-01-09lavc/ccaption_dec: implement font stylesAman Gupta