Skip to content

Commit

Permalink
fix FFmpeg case
Browse files Browse the repository at this point in the history
  • Loading branch information
rbouqueau committed Apr 29, 2024
1 parent be694e6 commit 7fa0494
Show file tree
Hide file tree
Showing 19 changed files with 70 additions and 70 deletions.
26 changes: 13 additions & 13 deletions Changelog
Expand Up @@ -57,7 +57,7 @@

## Misc
- Migrated doc from github's wiki to wiki.gpac.io
- FFMPEG 7 support
- FFmpeg 7 support
- Added features for configure (vout, aout, fonts, doc, evg)
- Allow specifying network interface by name or IP (instead of IP only)
- UDP/TCP filtering and recording to / playback from pcap, pcapng and GPAC gpc files
Expand All @@ -72,7 +72,7 @@
- Conversion filters for VTT, TXG3 and TTML
- SubstationAlpha subtitle import (basic)
- DVB subpictures in M2TS mux and demux
- FFMPEG (mostly for Matroska) subtitle import and export (SRT/SSA to TX3G, TX3G to SRT, WebVTT and DVB subpictures)
- FFmpeg (mostly for Matroska) subtitle import and export (SRT/SSA to TX3G, TX3G to SRT, WebVTT and DVB subpictures)
- EC3+Atmos signaling support
- ALAC support
- Improved DolbyVision muxing
Expand All @@ -89,7 +89,7 @@
- UTC-based range extraction in reframer
- Thumbnail generator filter
- Added unframer filter
- FFMPEG bitstream filters support
- FFmpeg bitstream filters support
- Initseg support in mp4dmx filter
- Access to GPU textures of decoders in Python and JSF bindings (glpush filter for tests)
- Chapters editing and original timestamp dispatch in reformer range extraction
Expand Down Expand Up @@ -249,11 +249,11 @@ It also adds several small features:
- HEVC tile splitting and merging filters
- Compositor is a standalone filter (SVG/BIFS/VRML graphics in a filter chain)
- Image encoding support through libjpg and libpng
- Full FFMPEG support:
* Encoding/decoding through FFMPEG libavcodec
* Multiplexing/demultiplexing through FFMPEG libavformat
* Device grabbers through FFMPEG libavdevice
* Raw audio and video filters through FFMPEG libavfilter
- Full FFmpeg support:
* Encoding/decoding through FFmpeg libavcodec
* Multiplexing/demultiplexing through FFmpeg libavformat
* Device grabbers through FFmpeg libavdevice
* Raw audio and video filters through FFmpeg libavfilter
- Support for QuickJS (ES2002) and bindings for:
* Complete filter API
* GPAC software rasterizer (EVG)
Expand Down Expand Up @@ -732,7 +732,7 @@ It also adds several small features:
- fixed 3GPP text display bug when stopping and changing an animationStream using a 3GPP text object.
- fixed AVC/H264 HP parsing
- added BIFS track visual size info at BT/XMT encoding stage
- MOVED FFMPEG INCLUDE FILES TO LATEST CVS VERSION to support AVC/H264 HP decoding
- MOVED FFmpeg INCLUDE FILES TO LATEST CVS VERSION to support AVC/H264 HP decoding
- added meta self reference item for dual-headed files
- commit MPEG-4 LATM Audio hinting patch and added rtp aggregation. RTP reassembler NOT UPDATED YET
- fixed bugs in TeXML parser
Expand Down Expand Up @@ -878,7 +878,7 @@ It also adds several small features:
- Xiph OGG demuxer: supports file, http download (not tested) and icecast servers.
- Xiph Vorbis decoder
- Xiph Theora support (should work with fluendo but I can't get any data from the server...)
- Better FFMPEG support (moved to latest ffmpeg cvs tarball).
- Better FFmpeg support (moved to latest ffmpeg cvs tarball).
- all file associations in client are made through mime types, and changed handling of service (mime type query if possible before loading plugin)
- network stats & changed all UIs for that.
- decoder stats & changed all UIs for that.
Expand Down Expand Up @@ -1082,16 +1082,16 @@ It also adds several small features:
- PocketPC installer
- OpenDivx plugin
- clean-up extra lib package, install notes and added missing libs
- FFMPEG demuxer done (synchro not good and seeking pbs). GPAC now supports all FFMPEG-supported formats.
- FFmpeg demuxer done (synchro not good and seeking pbs). GPAC now supports all FFmpeg-supported formats.
- new NSIS script for complete install
- fixed hang on PocketPC WavOut and misc cleanups for PocketPC compilation
- H263 in 3GP files (use FFMPEG dec)
- H263 in 3GP files (use FFmpeg dec)
- H263 streaming (RFC 2429)
- B-frame parsing and CTS reconstruction in AVI importer (needs debug).
- muxInfo.duration parameter is now in milliseconds (was in seconds)
- '-node' options to MP4Box to get a given node syntax (fields default value and QP info)
- relative time stamps in BT ('AT D1000 ' means 'at last AU TS + 1000')
- FFMPEG decoder plugin now working with latest CVS snapshot
- FFmpeg decoder plugin now working with latest CVS snapshot
- MediaControl switching (several MC on single object)
- separate file downloader API and streaming client API / cleanup of plugins and ESM module
- base support for non-MPEG4 URLs in the scene (eg, url "http://whatever/resource")
Expand Down
2 changes: 1 addition & 1 deletion applications/gpac/gpac_help.c
Expand Up @@ -829,7 +829,7 @@ void gpac_usage(GF_SysArgMode argmode)
"__[LINK]__: a link instruction (e.g., `@`, `@2`, `@2#StreamType=Visual`, ...), see %s.\n"
"__[options]__: one or more option strings, each starting with a `-` character.\n"
" - an option using a single `-` indicates an option of gpac (see %s) or of libgpac (see %s)\n"
" - an option using `--` indicates a global filter or meta-filter (e.g. FFMPEG) option, e.g. `--block_size=1000` or `--profile=Baseline` (see %s)\n"
" - an option using `--` indicates a global filter or meta-filter (e.g. FFmpeg) option, e.g. `--block_size=1000` or `--profile=Baseline` (see %s)\n"
" \n"
"Filter declaration order may impact the link resolver which will try linking in declaration order. Most of the time for simple graphs, this has no impact. However, for complex graphs with no link declarations, this can lead to different results. \n"
"Options do not require any specific order, and may be present anywhere, including between link statements or filter declarations. \n"
Expand Down
10 changes: 5 additions & 5 deletions configure
Expand Up @@ -242,8 +242,8 @@ push_feature "qjs-stack" "!stack depth checking in QuickJS (WILL CRASH in multit
push_feature "tinygl" "!TinyGL support"
push_feature "doc" "Embedded documentation"
push_feature "evg" "EVG (GPAC vector graphics tools)"
push_feature "avdevice" "avdevice support in FFMPEG"
push_feature "avfilter" "avfilter support in FFMPEG"
push_feature "avdevice" "avdevice support in FFmpeg"
push_feature "avfilter" "avfilter support in FFmpeg"
push_feature "net-cap" "network grab and replay support"

push_feature "compositor" "*Compositor"
Expand Down Expand Up @@ -394,7 +394,7 @@ GPAC build options:
--enable-sdl-static use static SDL linking [default=no]
--X11-path=X11_PATH specify path for X11 includes and libraries [$X11_PATH]
--dxsdk-path=DX_PATH specify DirectX SDK for MinGW [$dxsdk_path]
--extra-ff-ldflags=EF add EF flags to FFMPEG LDFLAGS [$ffmpeg_extra_ldflags]
--extra-ff-ldflags=EF add EF flags to FFmpeg LDFLAGS [$ffmpeg_extra_ldflags]
--emscripten configure for emscripten build (same as running emconfigure configure) - this will disable some features by default (network, avdevice), use --enable-FOO to re-enable
--em-type=EXT output type, can be js, html or wasm [$em_type]
--em-size=V total memory in bytes to use for emscripten - if 0, dynamic memory growth will be used [$em_size]
Expand Down Expand Up @@ -2517,9 +2517,9 @@ fi
fi

if [ -z $ffopts ] ; then
echo "FFMPEG: $has_ffmpeg"
echo "FFmpeg: $has_ffmpeg"
else
echo "FFMPEG: $has_ffmpeg - \"$ffopts\" supported"
echo "FFmpeg: $has_ffmpeg - \"$ffopts\" supported"
fi


Expand Down
6 changes: 3 additions & 3 deletions include/gpac/filters.h
Expand Up @@ -1381,18 +1381,18 @@ enum
GF_PROP_PCK_SPLIT_END = GF_4CC('P','S','P','E'),


/*! Internal property used for meta demuxers ( FFMPEG, ...) codec ID
/*! Internal property used for meta demuxers ( FFmpeg, ...) codec ID
Property can be:
- pointer to codec context: only for ffdmx with old ffmpeg versions)
- uint: AVCODEC_ID_* ffdmx with newer versions or ffenc output
*/
GF_PROP_PID_META_DEMUX_CODEC_ID = GF_4CC('M','D','C','I'),

/*! Internal property used for meta demuxers ( FFMPEG, ...) codec name*/
/*! Internal property used for meta demuxers ( FFmpeg, ...) codec name*/
GF_PROP_PID_META_DEMUX_CODEC_NAME = GF_4CC('M','D','C','N'),

/*! Internal property used for meta demuxers ( FFMPEG, ...) codec opaque data, u32*/
/*! Internal property used for meta demuxers ( FFmpeg, ...) codec opaque data, u32*/
GF_PROP_PID_META_DEMUX_OPAQUE = GF_4CC('M','D','O','P'),
};

Expand Down
2 changes: 1 addition & 1 deletion share/gui/extensions/about/info.js
Expand Up @@ -5,7 +5,7 @@ extension = {
str += '\nMore info: https://gpac.io';
str += '\nDistributed under LGPL v2.1 or any later version';
str += '\n(c) 2002-2020 Telecom Paris';
str += '\n\nThanks to all great OSS tools used in GPAC:\nQuickJS, FreeType, FFMPEG, OpenHEVC, libjpeg, libpng, faad2, libmad, SDL, ...\n\n';
str += '\n\nThanks to all great OSS tools used in GPAC:\nQuickJS, FreeType, FFmpeg, OpenHEVC, libjpeg, libpng, faad2, libmad, SDL, ...\n\n';
notif = gw_new_message(null, 'About GPAC', str, 0);
notif.set_size(gw_display_width, gw_display_height);
notif.set_alpha(0.8);
Expand Down
2 changes: 1 addition & 1 deletion src/filters/dec_openhevc.c
Expand Up @@ -1420,7 +1420,7 @@ GF_FilterRegister OHEVCDecRegister = {
.process_event = ohevcdec_process_event,
.flags = GF_FS_REG_BLOCK_MAIN,
.max_extra_pids = (HEVC_MAX_STREAMS-1),
//by default take over FFMPEG
//by default take over FFmpeg
.priority = 100
};

Expand Down
6 changes: 3 additions & 3 deletions src/filters/ff_avf.c
Expand Up @@ -1082,16 +1082,16 @@ static const GF_FilterCapability FFAVFilterCaps[] =
GF_FilterRegister FFAVFilterRegister = {
.name = "ffavf",
.version = LIBAVFILTER_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG AVFilter")
GF_FS_SET_DESCRIPTION("FFmpeg AVFilter")
GF_FS_SET_HELP("This filter provides libavfilter raw audio and video tools.\n"
"See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details\n"
"See FFmpeg documentation (https://ffmpeg.org/documentation.html) for more details\n"
"To list all supported avfilters for your GPAC build, use `gpac -h ffavf:*`.\n"
"\n"
"# Declaring a filter\n"
"The filter loads a filter or a filter chain description from the [-f]() option.\n"
"EX ffavf:f=showspectrum\n"
"\n"
"Unlike other FFMPEG bindings in GPAC, this filter does not parse other libavfilter options, you must specify them directly in the filter chain, and the [-f]() option will have to be escaped.\n"
"Unlike other FFmpeg bindings in GPAC, this filter does not parse other libavfilter options, you must specify them directly in the filter chain, and the [-f]() option will have to be escaped.\n"
"EX ffavf::f=showspectrum=size=320x320 or ffavf::f=showspectrum=size=320x320::pfmt=rgb\n"
"EX ffavf::f=anullsrc=channel_layout=5.1:sample_rate=48000\n"
"\n"
Expand Down
4 changes: 2 additions & 2 deletions src/filters/ff_bsf.c
Expand Up @@ -407,9 +407,9 @@ static const GF_FilterCapability FFBSFCaps[] =
GF_FilterRegister FFBSFRegister = {
.name = "ffbsf",
.version = LIBAVUTIL_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG BitStream filter")
GF_FS_SET_DESCRIPTION("FFmpeg BitStream filter")
GF_FS_SET_HELP("This filter provides bitstream filters (BSF) for compressed audio and video formats.\n"
"See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details\n"
"See FFmpeg documentation (https://ffmpeg.org/documentation.html) for more details\n"
"To list all supported bitstream filters for your GPAC build, use `gpac -h ffbsf:*`.\n"
"\n"
"Several BSF may be specified in [-f]() for different coding types. BSF not matching the coding type are silently ignored.\n"
Expand Down
24 changes: 12 additions & 12 deletions src/filters/ff_common.c
Expand Up @@ -256,7 +256,7 @@ enum AVPixelFormat ffmpeg_pixfmt_from_gpac(u32 pfmt, Bool no_warn)
i++;
}
if (!no_warn && (pfmt!=AV_PIX_FMT_NONE)) {
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFMPEG] Unmapped GPAC pixel format %s, patch welcome\n", gf_4cc_to_str(pfmt) ));
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFmpeg] Unmapped GPAC pixel format %s, patch welcome\n", gf_4cc_to_str(pfmt) ));
}
return AV_PIX_FMT_NONE;
}
Expand All @@ -266,7 +266,7 @@ u32 ffmpeg_pixfmt_to_gpac(enum AVPixelFormat pfmt, Bool no_warn)
const AVPixFmtDescriptor *ffdesc = av_pix_fmt_desc_get(pfmt);
if (!ffdesc) {
if (!no_warn && (pfmt!=AV_PIX_FMT_NONE)) {
GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[FFMPEG] Unrecognized FFMPEG pixel format %d\n", pfmt ));
GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[FFmpeg] Unrecognized FFmpeg pixel format %d\n", pfmt ));
}
return 0;
}
Expand All @@ -277,7 +277,7 @@ u32 ffmpeg_pixfmt_to_gpac(enum AVPixelFormat pfmt, Bool no_warn)
i++;
}
if (!no_warn && (pfmt!=AV_PIX_FMT_NONE)) {
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFMPEG] Unmapped FFMPEG pixel format %s, patch welcome\n", ffdesc->name));
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFmpeg] Unmapped FFmpeg pixel format %s, patch welcome\n", ffdesc->name));
}
return 0;
}
Expand Down Expand Up @@ -340,7 +340,7 @@ u32 ffmpeg_audio_fmt_from_gpac(u32 sfmt)
return FF2GPAC_AudioFormats[i].ff_sf;
i++;
}
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFMPEG] Unmapped GPAC audio format %s, patch welcome\n", gf_4cc_to_str(sfmt) ));
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFmpeg] Unmapped GPAC audio format %s, patch welcome\n", gf_4cc_to_str(sfmt) ));
return 0;
}

Expand All @@ -352,7 +352,7 @@ u32 ffmpeg_audio_fmt_to_gpac(u32 sfmt)
return FF2GPAC_AudioFormats[i].gpac_sf;
i++;
}
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFMPEG] Unmapped FFMPEG audio format %d, patch welcome\n", sfmt ));
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFmpeg] Unmapped FFmpeg audio format %d, patch welcome\n", sfmt ));
return 0;
}

Expand Down Expand Up @@ -554,7 +554,7 @@ u32 ffmpeg_codecid_from_gpac(u32 codec_id, u32 *ff_codectag)
if (c) return c->id;
}

GF_LOG(GF_LOG_INFO, GF_LOG_MEDIA, ("[FFMPEG] Unmapped GPAC codec %s\n", gf_codecid_name(codec_id) ));
GF_LOG(GF_LOG_INFO, GF_LOG_MEDIA, ("[FFmpeg] Unmapped GPAC codec %s\n", gf_codecid_name(codec_id) ));
return 0;
}

Expand All @@ -566,7 +566,7 @@ u32 ffmpeg_codecid_to_gpac(u32 codec_id)
return FF2GPAC_CodecIDs[i].gpac_codec_id;
i++;
}
GF_LOG(GF_LOG_INFO, GF_LOG_MEDIA, ("[FFMPEG] Unmapped FFMPEG codec ID %s\n", avcodec_get_name(codec_id) ));
GF_LOG(GF_LOG_INFO, GF_LOG_MEDIA, ("[FFmpeg] Unmapped FFmpeg codec ID %s\n", avcodec_get_name(codec_id) ));
return 0;
}

Expand Down Expand Up @@ -606,7 +606,7 @@ u32 ffmpeg_stream_type_from_gpac(u32 streamtype)
return FF2GPAC_StreamTypes[i].ff_st;
i++;
}
GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[FFMPEG] Unmapped GPAC stream type %s, assuming data\n", gf_stream_type_name(streamtype) ));
GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[FFmpeg] Unmapped GPAC stream type %s, assuming data\n", gf_stream_type_name(streamtype) ));
return AVMEDIA_TYPE_DATA;
}

Expand All @@ -619,7 +619,7 @@ u32 ffmpeg_stream_type_to_gpac(u32 streamtype)
return FF2GPAC_StreamTypes[i].gpac_st;
i++;
}
GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[FFMPEG] Unmapped FFMPEG stream type %d, assuming data\n", streamtype ));
GF_LOG(GF_LOG_ERROR, GF_LOG_MEDIA, ("[FFmpeg] Unmapped FFmpeg stream type %d, assuming data\n", streamtype ));
return GF_STREAM_METADATA;
}

Expand Down Expand Up @@ -922,7 +922,7 @@ GF_FilterArgs ffmpeg_arg_translate(const struct AVOption *opt)
break;
#endif
default:
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFMPEG] Unknown ffmpeg option type %d\n", opt->type));
GF_LOG(GF_LOG_WARNING, GF_LOG_MEDIA, ("[FFmpeg] Unknown ffmpeg option type %d\n", opt->type));
break;
}
return arg;
Expand Down Expand Up @@ -2272,10 +2272,10 @@ void ffmpeg_check_threads(GF_Filter *filter, AVDictionary *options, AVCodecConte
codecctx->thread_count = 0;
codecctx->thread_type = 0;
if (num_threads>0) {
GF_LOG(GF_LOG_WARNING, GF_LOG_CODEC, ("Using FFMPEG threads on main thread would deadlock, disabling threading (use -threads=1 to have one extra gpac thread)\n"));
GF_LOG(GF_LOG_WARNING, GF_LOG_CODEC, ("Using FFmpeg threads on main thread would deadlock, disabling threading (use -threads=1 to have one extra gpac thread)\n"));
}
} else {
GF_LOG(GF_LOG_INFO, GF_LOG_CODEC, ("FFMPEG threads (%d type %d) enabled\n", num_threads, codecctx->thread_type));
GF_LOG(GF_LOG_INFO, GF_LOG_CODEC, ("FFmpeg threads (%d type %d) enabled\n", num_threads, codecctx->thread_type));
}
#elif defined(GPAC_CONFIG_EMSCRIPTEN)
//no thread support in build, disable ffmpeg threading
Expand Down
10 changes: 5 additions & 5 deletions src/filters/ff_dec.c
Expand Up @@ -1502,19 +1502,19 @@ static const GF_FilterCapability FFDecodeCaps[] =
GF_FilterRegister FFDecodeRegister = {
.name = "ffdec",
.version = LIBAVCODEC_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG decoder")
GF_FS_SET_HELP("This filter decodes audio and video streams using FFMPEG.\n"
"See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details.\n"
GF_FS_SET_DESCRIPTION("FFmpeg decoder")
GF_FS_SET_HELP("This filter decodes audio and video streams using FFmpeg.\n"
"See FFmpeg documentation (https://ffmpeg.org/documentation.html) for more details.\n"
"To list all supported decoders for your GPAC build, use `gpac -h ffdec:*`.\n"
"\n"
"Options can be passed from prompt using `--OPT=VAL`\n"
"The default threading mode is to let libavcodec decide how many threads to use. To enforce single thread, use `--threads=1`\n"
"\n"
"# Codec Map\n"
"The [-ffcmap]() option allows specifying FFMPEG codecs for codecs not supported by GPAC.\n"
"The [-ffcmap]() option allows specifying FFmpeg codecs for codecs not supported by GPAC.\n"
"Each entry in the list is formatted as `GID@name` or `GID@+name`, with:\n"
"- GID: 4CC or 32 bit identifier of codec ID, as indicated by `gpac -i source inspect:full`\n"
"- name: FFMPEG codec name\n"
"- name: FFmpeg codec name\n"
"- `+': is set and extra data is set and formatted as an ISOBMFF box, removes box header\n"
"\n"
"EX gpac -i source.mp4 --ffcmap=BKV1@binkvideo vout\n"
Expand Down
16 changes: 8 additions & 8 deletions src/filters/ff_dmx.c
Expand Up @@ -1745,9 +1745,9 @@ static const GF_FilterCapability FFDmxCaps[] =
GF_FilterRegister FFDemuxRegister = {
.name = "ffdmx",
.version=LIBAVFORMAT_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG demultiplexer")
GF_FS_SET_HELP("This filter demultiplexes an input file or open a source protocol using FFMPEG.\n"
"See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details.\n"
GF_FS_SET_DESCRIPTION("FFmpeg demultiplexer")
GF_FS_SET_HELP("This filter demultiplexes an input file or open a source protocol using FFmpeg.\n"
"See FFmpeg documentation (https://ffmpeg.org/documentation.html) for more details.\n"
"To list all supported demultiplexers for your GPAC build, use `gpac -h ffdmx:*`.\n"
"This will list both supported input formats and protocols.\n"
"Input protocols are listed with `Description: Input protocol`, and the subclass name identifies the protocol scheme.\n"
Expand Down Expand Up @@ -1830,7 +1830,7 @@ static void ffdmxpid_finalize(GF_Filter *filter)
const GF_FilterRegister FFDemuxPidRegister = {
.name = "ffdmxpid",
.version=LIBAVFORMAT_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG demultiplexer")
GF_FS_SET_DESCRIPTION("FFmpeg demultiplexer")
GF_FS_SET_HELP("Alias of ffdmx for GPAC pid demultiplexing, same options as ffdmx.\n")
.private_size = sizeof(GF_FFDemuxCtx),
SETCAPS(FFPidDmxCaps),
Expand Down Expand Up @@ -1901,7 +1901,7 @@ static GF_Err ffavin_initialize(GF_Filter *filter)
dev_fmt = NULL;
}
#else
//not supported for old FFMPEG versions
//not supported for old FFmpeg versions
#endif
}
#if (LIBAVCODEC_VERSION_MAJOR >= 58) && (LIBAVCODEC_VERSION_MINOR>=20)
Expand Down Expand Up @@ -2133,9 +2133,9 @@ static const GF_FilterCapability FFAVInCaps[] =
GF_FilterRegister FFAVInRegister = {
.name = "ffavin",
.version = LIBAVDEVICE_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG AV Capture")
GF_FS_SET_HELP("Reads from audio/video capture devices using FFMPEG.\n"
"See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details.\n"
GF_FS_SET_DESCRIPTION("FFmpeg AV Capture")
GF_FS_SET_HELP("Reads from audio/video capture devices using FFmpeg.\n"
"See FFmpeg documentation (https://ffmpeg.org/documentation.html) for more details.\n"
"To list all supported grabbers for your GPAC build, use `gpac -h ffavin:*`.\n"
"\n"
"# Device identification\n"
Expand Down
6 changes: 3 additions & 3 deletions src/filters/ff_enc.c
Expand Up @@ -2210,9 +2210,9 @@ static const GF_FilterCapability FFEncodeCaps[] =
GF_FilterRegister FFEncodeRegister = {
.name = "ffenc",
.version=LIBAVCODEC_IDENT,
GF_FS_SET_DESCRIPTION("FFMPEG encoder")
GF_FS_SET_HELP("This filter encodes audio and video streams using FFMPEG.\n"
"See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details.\n"
GF_FS_SET_DESCRIPTION("FFmpeg encoder")
GF_FS_SET_HELP("This filter encodes audio and video streams using FFmpeg.\n"
"See FFmpeg documentation (https://ffmpeg.org/documentation.html) for more details.\n"
"To list all supported encoders for your GPAC build, use `gpac -h ffenc:*`.\n"
"\n"
"The filter will try to resolve the codec name in [-c]() against a libavcodec codec name (e.g. `libx264`) and use it if found.\n"
Expand Down

0 comments on commit 7fa0494

Please sign in to comment.