[FFmpeg-devel] [PATCH v11 00/14] Subtitle Filtering
Soft Works
softworkz at hotmail.com
Thu Sep 30 23:07:05 EEST 2021
v11 Update:
- FEATURE-COMPLETE!
No more features or filters will be added to this
patchset
- Added subscale filter
Provides high-quality scaling and rearranging
functionality for graphical subtitles.
This has been the last missing bit for making this
a useful and versatile toolset for subtitle manipulation
- The common ass utility functions remain to reside
in avutil, but in this version, they are marked as
avpriv_ and no longer public like in the previous
version.
- A number of detail fixes are included, but there
haven't been significant changes to the core
implementation in the past few versions.
I'm quite confident about the current state.
- As a final step I'll be going to create a wiki page
presenting a comprehensive collection of usage examples,
showing off the whole range of new capabilities
and also providing proof that it is working universally
in a wide range of use cases.
v10 Update: INVALID
- Incorrect patch sequence sent.
v9 Update:
- Addressed all review comments (thanks Andreas!)
- Move ass utility functions to avutil as public API
- Handle subtitle decoding via new decode API
(removed av_decode_subtitle3)
- Change 'subtitle_header' to use refcounted buffers
- Allow mapping subtitle streams to filter graph
and direct outputs simultaneously
- Added explanation and justification for test changes
to commit message
--------------------------------------------------------------
This patchset introduces filtering support for subtitles.
Besides the ground work, this patchset includes a range
of new filters for subtitle processing:
- subscale (S -> S)
Provides high-quality scaling and rearranging
functionality for graphical subtitles.
- graphicsubs2text (S -> S)
Convert graphic subtitles to text subtitles via OCR
- censor {S -> S)
Allows censoring word in subtitles by a configurable
word list
- show_speaker {S -> S)
Prepend the speaker names to text lines
(those are often available in ass subs)
- split_cc (V -> VS)
Splits out Closed-Caption data as a subtitle stream
for filtering and encoding
- overlay_graphicsubs (VS -> V)
Overlay graphic subtitles onto a video stream
- graphicsub2video {S -> V)
Converts graphic subtitles to (transparent) video frames
- overlay_textsubs {VS -> V)
Overlay text subtitles onto a video stream.
- textsubs2video {S -> V)
Converts text subtitles to video frames
- textmod {S -> S)
Modify subtitle text in a number of ways
- stripstyles {S -> S)
Remove all inline styles from subtitle events
Regards,
softworkz
softworkz (14):
global: Prepare AVFrame for subtitle handling
global: Move ass helper functions to avutil as avpriv_ and extend ass
dialog parsing
fftools/play,probe: Adjust for subtitle changes
avfilter/subtitles: Add subtitles.c for subtitle frame allocation
avfilter/avfilter: Handle subtitle frames
avfilter/sbuffer: Add sbuffersrc and sbuffersink filters
avfilter/overlay_graphicsubs: Add overlay_graphicsubs and
graphicsub2video filters
fftools/ffmpeg: Replace sub2video with subtitle frame filtering
avfilter/overlay_textsubs: Add overlay_textsubs and textsubs2video
filters
avfilter/textmod: Add textmod, censor and show_speaker filters
avfilter/stripstyles: Add stripstyles filter
avfilter/split_cc: Add split_cc filter for closed caption handling
avfilter/graphicsub2text: Add new graphicsub2text filter (OCR)
avfilter/subscale: Add filter for scaling and/or re-arranging
graphical subtitles
configure | 7 +-
doc/filters.texi | 662 +++++++++++++
fftools/ffmpeg.c | 507 +++++-----
fftools/ffmpeg.h | 14 +-
fftools/ffmpeg_filter.c | 209 +++--
fftools/ffmpeg_hw.c | 2 +-
fftools/ffmpeg_opt.c | 3 +-
fftools/ffplay.c | 102 +--
fftools/ffprobe.c | 48 +-
libavcodec/Makefile | 56 +-
libavcodec/ass.h | 129 +--
libavcodec/assdec.c | 2 +-
libavcodec/assenc.c | 2 +-
libavcodec/avcodec.c | 19 -
libavcodec/avcodec.h | 75 +-
libavcodec/ccaption_dec.c | 19 +-
libavcodec/decode.c | 53 +-
libavcodec/jacosubdec.c | 2 +-
libavcodec/microdvddec.c | 7 +-
libavcodec/movtextdec.c | 3 +-
libavcodec/movtextenc.c | 20 +-
libavcodec/mpl2dec.c | 2 +-
libavcodec/pgssubdec.c | 1 +
libavcodec/realtextdec.c | 2 +-
libavcodec/samidec.c | 2 +-
libavcodec/srtdec.c | 2 +-
libavcodec/srtenc.c | 16 +-
libavcodec/subviewerdec.c | 2 +-
libavcodec/textdec.c | 4 +-
libavcodec/ttmlenc.c | 15 +-
libavcodec/utils.c | 11 +
libavcodec/webvttdec.c | 2 +-
libavcodec/webvttenc.c | 16 +-
libavfilter/Makefile | 14 +
libavfilter/allfilters.c | 13 +
libavfilter/avfilter.c | 30 +-
libavfilter/avfiltergraph.c | 5 +
libavfilter/buffersink.c | 63 ++
libavfilter/buffersink.h | 15 +
libavfilter/buffersrc.c | 72 ++
libavfilter/buffersrc.h | 1 +
libavfilter/formats.c | 14 +
libavfilter/formats.h | 3 +
libavfilter/internal.h | 1 +
libavfilter/sf_graphicsub2text.c | 323 +++++++
libavfilter/sf_split_cc.c | 298 ++++++
libavfilter/sf_stripstyles.c | 211 +++++
libavfilter/sf_subscale.c | 867 ++++++++++++++++++
libavfilter/sf_textmod.c | 719 +++++++++++++++
libavfilter/subtitles.c | 63 ++
libavfilter/subtitles.h | 44 +
libavfilter/vf_overlay_graphicsubs.c | 724 +++++++++++++++
libavfilter/vf_overlay_textsubs.c | 609 ++++++++++++
libavfilter/vf_subtitles.c | 50 +-
libavformat/utils.c | 1 +
libavutil/Makefile | 6 +
{libavcodec => libavutil}/ass.c | 73 +-
libavutil/ass_internal.h | 139 +++
{libavcodec => libavutil}/ass_split.c | 30 +-
.../ass_split_internal.h | 24 +-
libavutil/frame.c | 191 +++-
libavutil/frame.h | 93 +-
libavutil/subfmt.c | 240 +++++
libavutil/subfmt.h | 185 ++++
tests/ref/fate/filter-overlay-dvdsub-2397 | 181 ++--
tests/ref/fate/sub-dvb | 162 ++--
tests/ref/fate/sub2video | 1 -
tests/ref/fate/sub2video_basic | 93 +-
tests/ref/fate/sub2video_time_limited | 4 +-
69 files changed, 6571 insertions(+), 1007 deletions(-)
create mode 100644 libavfilter/sf_graphicsub2text.c
create mode 100644 libavfilter/sf_split_cc.c
create mode 100644 libavfilter/sf_stripstyles.c
create mode 100644 libavfilter/sf_subscale.c
create mode 100644 libavfilter/sf_textmod.c
create mode 100644 libavfilter/subtitles.c
create mode 100644 libavfilter/subtitles.h
create mode 100644 libavfilter/vf_overlay_graphicsubs.c
create mode 100644 libavfilter/vf_overlay_textsubs.c
rename {libavcodec => libavutil}/ass.c (73%)
create mode 100644 libavutil/ass_internal.h
rename {libavcodec => libavutil}/ass_split.c (94%)
rename libavcodec/ass_split.h => libavutil/ass_split_internal.h (89%)
create mode 100644 libavutil/subfmt.c
create mode 100644 libavutil/subfmt.h
--
2.30.2.windows.1
More information about the ffmpeg-devel
mailing list