The branch, master has been updated via 49b5c17e0924df1de72db44c5f49a1b65422d202 (commit) via cce1af54132ff7044a89388064490f53e6e80579 (commit) via f65875c0825ec9900836fec37c75e6f106c43f7f (commit) via e965fe9057ff4436fe0778c8c5c396793f3f331c (commit) via 28f0b7a237f24b16d09d292d39aa190fed39077f (commit) via 3c79219e93a37d671271d934e206ad5e8f63405b (commit) via 159330016c26d0a56ac3bf7b1a6b3aca3287511f (commit) via d81a971b3503ec636fcb15655975e2ceb0e9a1ef (commit) via 62dd3e1e7db374400cf7d9f8be1cac11d95916c5 (commit) via 0cd78bddc40f95a770700d2bec098cabdcbd51f1 (commit) via a34a85ed54089682fdab4ee4ff93999d4a7b3776 (commit) from 82a09aef05e5b738d6dec16a0e0080543ff30c87 (commit)
- Log ----------------------------------------------------------------- commit 49b5c17e0924df1de72db44c5f49a1b65422d202 Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 20:56:36 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:31:10 2025 +0200 avformat/mccdec: Constify data Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccdec.c b/libavformat/mccdec.c index 71882d13a9..e9b6fa14b4 100644 --- a/libavformat/mccdec.c +++ b/libavformat/mccdec.c @@ -158,7 +158,7 @@ struct ValidTimeCodeRate { char str[5]; }; -static struct ValidTimeCodeRate valid_time_code_rates[] = { +static const struct ValidTimeCodeRate valid_time_code_rates[] = { { .rate = { .num = 24, .den = 1 }, .str = "24" }, { .rate = { .num = 25, .den = 1 }, .str = "25" }, { .rate = { .num = 30000, .den = 1001 }, .str = "30DF" }, commit cce1af54132ff7044a89388064490f53e6e80579 Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 20:56:10 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:31:05 2025 +0200 avformat/mccenc: Hardcode codec names Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index 1fbeebfe0f..c64d53805d 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -437,9 +437,7 @@ static int mcc_init(AVFormatContext *avf) } else if (st->codecpar->codec_id != AV_CODEC_ID_SMPTE_436M_ANC) { av_log(avf, AV_LOG_ERROR, - "mcc muxer supports only codec %s or codec %s\n", - avcodec_get_name(AV_CODEC_ID_SMPTE_436M_ANC), - avcodec_get_name(AV_CODEC_ID_EIA_608)); + "mcc muxer supports only codec smpte_436m_anc or codec eia_608\n"); return AVERROR(EINVAL); } commit f65875c0825ec9900836fec37c75e6f106c43f7f Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 20:40:50 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:31:02 2025 +0200 avformat/mccdec: Avoid relocations Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccdec.c b/libavformat/mccdec.c index 8a9eff4c2a..71882d13a9 100644 --- a/libavformat/mccdec.c +++ b/libavformat/mccdec.c @@ -155,7 +155,7 @@ static int time_tracker_set_time(TimeTracker *tt, const MCCTimecode *tc, void *l struct ValidTimeCodeRate { AVRational rate; - const char *str; + char str[5]; }; static struct ValidTimeCodeRate valid_time_code_rates[] = { commit e965fe9057ff4436fe0778c8c5c396793f3f331c Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 20:36:18 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:59 2025 +0200 avformat/mccenc: Avoid relocations Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index d34b8625c4..1fbeebfe0f 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -144,7 +144,7 @@ static int mcc_write_header(AVFormatContext *avf) if (!localtime_r((time_t[1]){ timeval / 1000000 }, &tm)) return AVERROR(EINVAL); // we can't rely on having the C locale, so convert the date/time to a string ourselves: - static const char *const months[12] = { + static const char months[12][10] = { "January", "February", "March", @@ -162,7 +162,7 @@ static int mcc_write_header(AVFormatContext *avf) av_assert0(tm.tm_mon >= 0 && tm.tm_mon < FF_ARRAY_ELEMS(months)); const char *month = months[tm.tm_mon]; - static const char *const weekdays[7] = { + static const char weekdays[7][10] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; // assert that values are sane so we don't index out of bounds commit 28f0b7a237f24b16d09d292d39aa190fed39077f Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 20:00:00 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:53 2025 +0200 avformat/mccenc: Add newlines to logmessages Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index 14f67e420a..d34b8625c4 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -129,15 +129,15 @@ static int mcc_write_header(AVFormatContext *avf) else creation_program = "FFmpeg version " FFMPEG_VERSION; } else if (strchr(creation_program, '\n')) { - av_log(avf, AV_LOG_FATAL, "creation_program must not contain multiple lines of text"); + av_log(avf, AV_LOG_FATAL, "creation_program must not contain multiple lines of text\n"); return AVERROR(EINVAL); } if (avf->flags & AVFMT_FLAG_BITEXACT && !av_strcasecmp(mcc->creation_time, "now")) - av_log(avf, AV_LOG_ERROR, "creation_time must be overridden for bit-exact output"); + av_log(avf, AV_LOG_ERROR, "creation_time must be overridden for bit-exact output\n"); int64_t timeval = 0; int ret = av_parse_time(&timeval, mcc->creation_time, 0); if (ret < 0) { - av_log(avf, AV_LOG_FATAL, "can't parse creation_time"); + av_log(avf, AV_LOG_FATAL, "can't parse creation_time\n"); return ret; } struct tm tm; @@ -326,7 +326,7 @@ static int mcc_write_packet(AVFormatContext *avf, AVPacket *pkt) default: av_log(avf, AV_LOG_WARNING, - "Unsupported SMPTE 436M ANC Wrapping Type %#x -- discarding ANC packet", + "Unsupported SMPTE 436M ANC Wrapping Type %#x -- discarding ANC packet\n", (unsigned)coded_anc.wrapping_type); continue; } @@ -344,7 +344,7 @@ static int mcc_write_packet(AVFormatContext *avf, AVPacket *pkt) av_log(avf, AV_LOG_WARNING, "MCC Version 1.0 doesn't support ANC packets where the field number (got %u) isn't 0 and " - "line number (got %u) isn't 9: discarding ANC packet", + "line number (got %u) isn't 9: discarding ANC packet\n", field_number, (unsigned)coded_anc.line_number); continue; @@ -416,7 +416,7 @@ static int mcc_init(AVFormatContext *avf) if (mcc->mcc_version == MCC_VERSION_1) { if (mcc->timecode.fps == 60 && mcc->timecode.flags & AV_TIMECODE_FLAG_DROPFRAME) { - av_log(avf, AV_LOG_FATAL, "MCC Version 1.0 doesn't support 60DF (59.94 fps drop-frame)"); + av_log(avf, AV_LOG_FATAL, "MCC Version 1.0 doesn't support 60DF (59.94 fps drop-frame)\n"); return AVERROR(EINVAL); } } commit 3c79219e93a37d671271d934e206ad5e8f63405b Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 19:55:51 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:33 2025 +0200 avformat/mccenc: Check version-timecode compatibility earlier Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index 1baa007d66..14f67e420a 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -122,14 +122,6 @@ static const AVRational valid_time_code_rates[] = { static int mcc_write_header(AVFormatContext *avf) { MCCContext *mcc = avf->priv_data; - switch ((MCCVersion)mcc->mcc_version) { - case MCC_VERSION_1: - if (mcc->timecode.fps == 60 && mcc->timecode.flags & AV_TIMECODE_FLAG_DROPFRAME) { - av_log(avf, AV_LOG_FATAL, "MCC Version 1.0 doesn't support 60DF (59.94 fps drop-frame)"); - return AVERROR(EINVAL); - } - break; - } const char *creation_program = mcc->creation_program; if (!creation_program) { if (avf->flags & AVFMT_FLAG_BITEXACT) @@ -422,6 +414,13 @@ static int mcc_init(AVFormatContext *avf) if (ret < 0) return ret; + if (mcc->mcc_version == MCC_VERSION_1) { + if (mcc->timecode.fps == 60 && mcc->timecode.flags & AV_TIMECODE_FLAG_DROPFRAME) { + av_log(avf, AV_LOG_FATAL, "MCC Version 1.0 doesn't support 60DF (59.94 fps drop-frame)"); + return AVERROR(EINVAL); + } + } + // get av_timecode to calculate how many frames are in 24hr ret = av_timecode_init_from_components(&twenty_four_hr, time_code_rate, timecode_flags, 24, 0, 0, 0, avf); if (ret < 0) commit 159330016c26d0a56ac3bf7b1a6b3aca3287511f Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 19:53:33 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:28 2025 +0200 avformat/mccenc: Deduplicate strings Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index c46fa033cc..1baa007d66 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -58,83 +58,47 @@ typedef enum MCCVersion MCC_VERSION_MAX = MCC_VERSION_2, } MCCVersion; -static const char mcc_header_v1[] = // - "File Format=MacCaption_MCC V1.0\n" - "\n" +#define MCC_HEADER \ + "File Format=MacCaption_MCC V%c.0\n" \ + "\n" \ + "///////////////////////////////////////////////////////////////////////////////////\n" \ + "// Computer Prompting and Captioning Company\n" \ + "// Ancillary Data Packet Transfer File\n" \ + "//\n" \ + "// Permission to generate this format is granted provided that\n" \ + "// 1. This ANC Transfer file format is used on an as-is basis and no warranty is given, and\n" \ + "// 2. This entire descriptive information text is included in a generated .mcc file.\n" \ + "//\n" \ + "// General file format:\n" \ + "// HH:MM:SS:FF(tab)[Hexadecimal ANC data in groups of 2 characters]\n" \ + "// Hexadecimal data starts with the Ancillary Data Packet DID (Data ID defined in S291M)\n" \ + "// and concludes with the Check Sum following the User Data Words.\n" \ + "// Each time code line must contain at most one complete ancillary data packet.\n" \ + "// To transfer additional ANC Data successive lines may contain identical time code.\n" \ + "// Time Code Rate=[24, 25, 30, 30DF, 50, 60%s]\n" \ + "//\n" \ + "// ANC data bytes may be represented by one ASCII character according to the following schema:\n" \ + "// G FAh 00h 00h\n" \ + "// H 2 x (FAh 00h 00h)\n" \ + "// I 3 x (FAh 00h 00h)\n" \ + "// J 4 x (FAh 00h 00h)\n" \ + "// K 5 x (FAh 00h 00h)\n" \ + "// L 6 x (FAh 00h 00h)\n" \ + "// M 7 x (FAh 00h 00h)\n" \ + "// N 8 x (FAh 00h 00h)\n" \ + "// O 9 x (FAh 00h 00h)\n" \ + "// P FBh 80h 80h\n" \ + "// Q FCh 80h 80h\n" \ + "// R FDh 80h 80h\n" \ + "// S 96h 69h\n" \ + "// T 61h 01h\n" \ + "// U E1h 00h 00h 00h\n" \ + "// Z 00h\n" \ + "//\n" \ "///////////////////////////////////////////////////////////////////////////////////\n" - "// Computer Prompting and Captioning Company\n" - "// Ancillary Data Packet Transfer File\n" - "//\n" - "// Permission to generate this format is granted provided that\n" - "// 1. This ANC Transfer file format is used on an as-is basis and no warranty is given, and\n" - "// 2. This entire descriptive information text is included in a generated .mcc file.\n" - "//\n" - "// General file format:\n" - "// HH:MM:SS:FF(tab)[Hexadecimal ANC data in groups of 2 characters]\n" - "// Hexadecimal data starts with the Ancillary Data Packet DID (Data ID defined in S291M)\n" - "// and concludes with the Check Sum following the User Data Words.\n" - "// Each time code line must contain at most one complete ancillary data packet.\n" - "// To transfer additional ANC Data successive lines may contain identical time code.\n" - "// Time Code Rate=[24, 25, 30, 30DF, 50, 60]\n" - "//\n" - "// ANC data bytes may be represented by one ASCII character according to the following schema:\n" - "// G FAh 00h 00h\n" - "// H 2 x (FAh 00h 00h)\n" - "// I 3 x (FAh 00h 00h)\n" - "// J 4 x (FAh 00h 00h)\n" - "// K 5 x (FAh 00h 00h)\n" - "// L 6 x (FAh 00h 00h)\n" - "// M 7 x (FAh 00h 00h)\n" - "// N 8 x (FAh 00h 00h)\n" - "// O 9 x (FAh 00h 00h)\n" - "// P FBh 80h 80h\n" - "// Q FCh 80h 80h\n" - "// R FDh 80h 80h\n" - "// S 96h 69h\n" - "// T 61h 01h\n" - "// U E1h 00h 00h 00h\n" - "// Z 00h\n" - "//\n" - "///////////////////////////////////////////////////////////////////////////////////\n"; - -static const char mcc_header_v2[] = // - "File Format=MacCaption_MCC V2.0\n" - "\n" - "///////////////////////////////////////////////////////////////////////////////////\n" - "// Computer Prompting and Captioning Company\n" - "// Ancillary Data Packet Transfer File\n" - "//\n" - "// Permission to generate this format is granted provided that\n" - "// 1. This ANC Transfer file format is used on an as-is basis and no warranty is given, and\n" - "// 2. This entire descriptive information text is included in a generated .mcc file.\n" - "//\n" - "// General file format:\n" - "// HH:MM:SS:FF(tab)[Hexadecimal ANC data in groups of 2 characters]\n" - "// Hexadecimal data starts with the Ancillary Data Packet DID (Data ID defined in S291M)\n" - "// and concludes with the Check Sum following the User Data Words.\n" - "// Each time code line must contain at most one complete ancillary data packet.\n" - "// To transfer additional ANC Data successive lines may contain identical time code.\n" - "// Time Code Rate=[24, 25, 30, 30DF, 50, 60, 60DF]\n" - "//\n" - "// ANC data bytes may be represented by one ASCII character according to the following schema:\n" - "// G FAh 00h 00h\n" - "// H 2 x (FAh 00h 00h)\n" - "// I 3 x (FAh 00h 00h)\n" - "// J 4 x (FAh 00h 00h)\n" - "// K 5 x (FAh 00h 00h)\n" - "// L 6 x (FAh 00h 00h)\n" - "// M 7 x (FAh 00h 00h)\n" - "// N 8 x (FAh 00h 00h)\n" - "// O 9 x (FAh 00h 00h)\n" - "// P FBh 80h 80h\n" - "// Q FCh 80h 80h\n" - "// R FDh 80h 80h\n" - "// S 96h 69h\n" - "// T 61h 01h\n" - "// U E1h 00h 00h 00h\n" - "// Z 00h\n" - "//\n" - "///////////////////////////////////////////////////////////////////////////////////\n"; + +#define MCC_HEADER_PRINTF_ARGS(mcc_version) (mcc_version) + '0', \ + (mcc_version) == MCC_VERSION_1 ? "" : ", 60DF" /** * generated with the bash command: @@ -158,7 +122,6 @@ static const AVRational valid_time_code_rates[] = { static int mcc_write_header(AVFormatContext *avf) { MCCContext *mcc = avf->priv_data; - const char *mcc_header = mcc_header_v1; switch ((MCCVersion)mcc->mcc_version) { case MCC_VERSION_1: if (mcc->timecode.fps == 60 && mcc->timecode.flags & AV_TIMECODE_FLAG_DROPFRAME) { @@ -166,9 +129,6 @@ static int mcc_write_header(AVFormatContext *avf) return AVERROR(EINVAL); } break; - case MCC_VERSION_2: - mcc_header = mcc_header_v2; - break; } const char *creation_program = mcc->creation_program; if (!creation_program) { @@ -218,13 +178,13 @@ static int mcc_write_header(AVFormatContext *avf) const char *weekday = weekdays[tm.tm_wday]; avio_printf(avf->pb, - "%s\n" + MCC_HEADER "\n" "UUID=%s\n" "Creation Program=%s\n" "Creation Date=%s, %s %d, %d\n" "Creation Time=%02d:%02d:%02d\n" "Time Code Rate=%u%s\n\n", - mcc_header, + MCC_HEADER_PRINTF_ARGS(mcc->mcc_version), mcc_ffmpeg_uuid, creation_program, weekday, commit d81a971b3503ec636fcb15655975e2ceb0e9a1ef Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 19:16:44 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:24 2025 +0200 avformat/mccenc: Constify read-only data Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index bdc8425408..c46fa033cc 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -145,7 +145,7 @@ static const char mcc_header_v2[] = // */ static const char mcc_ffmpeg_uuid[] = "0087C4F6-A6B4-5469-8C8E-BBF44950401D"; -static AVRational valid_time_code_rates[] = { +static const AVRational valid_time_code_rates[] = { { .num = 24, .den = 1 }, { .num = 25, .den = 1 }, { .num = 30000, .den = 1001 }, commit 62dd3e1e7db374400cf7d9f8be1cac11d95916c5 Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 19:16:06 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:20 2025 +0200 avformat/mccenc: Remove redundant setting of time base It has already been done in init. Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index 02541caeb3..bdc8425408 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -158,7 +158,6 @@ static AVRational valid_time_code_rates[] = { static int mcc_write_header(AVFormatContext *avf) { MCCContext *mcc = avf->priv_data; - avpriv_set_pts_info(avf->streams[0], 64, mcc->timecode.rate.den, mcc->timecode.rate.num); const char *mcc_header = mcc_header_v1; switch ((MCCVersion)mcc->mcc_version) { case MCC_VERSION_1: commit 0cd78bddc40f95a770700d2bec098cabdcbd51f1 Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 18:49:42 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:30:17 2025 +0200 avformat/mccenc: Fix assert check Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index f978c420a3..02541caeb3 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -208,7 +208,7 @@ static int mcc_write_header(AVFormatContext *avf) "December", }; // assert that values are sane so we don't index out of bounds - av_assert0(tm.tm_mon >= 0 && tm.tm_mon <= FF_ARRAY_ELEMS(months)); + av_assert0(tm.tm_mon >= 0 && tm.tm_mon < FF_ARRAY_ELEMS(months)); const char *month = months[tm.tm_mon]; static const char *const weekdays[7] = { commit a34a85ed54089682fdab4ee4ff93999d4a7b3776 Author: Andreas Rheinhardt <andreas.rheinha...@outlook.com> AuthorDate: Fri Sep 19 19:42:24 2025 +0200 Commit: Andreas Rheinhardt <andreas.rheinha...@outlook.com> CommitDate: Sat Sep 20 00:29:41 2025 +0200 avformat/mccenc: Remove redundant check This has already been checked in init. Reviewed-by: Jacob Lifshay <programmerj...@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> diff --git a/libavformat/mccenc.c b/libavformat/mccenc.c index 298bc6dd1a..f978c420a3 100644 --- a/libavformat/mccenc.c +++ b/libavformat/mccenc.c @@ -158,10 +158,6 @@ static AVRational valid_time_code_rates[] = { static int mcc_write_header(AVFormatContext *avf) { MCCContext *mcc = avf->priv_data; - if (avf->nb_streams != 1) { - av_log(avf, AV_LOG_ERROR, "mcc muxer supports at most one stream\n"); - return AVERROR(EINVAL); - } avpriv_set_pts_info(avf->streams[0], 64, mcc->timecode.rate.den, mcc->timecode.rate.num); const char *mcc_header = mcc_header_v1; switch ((MCCVersion)mcc->mcc_version) { ----------------------------------------------------------------------- Summary of changes: libavformat/mccdec.c | 4 +- libavformat/mccenc.c | 166 ++++++++++++++++++--------------------------------- 2 files changed, 61 insertions(+), 109 deletions(-) hooks/post-receive -- _______________________________________________ ffmpeg-cvslog mailing list -- ffmpeg-cvslog@ffmpeg.org To unsubscribe send an email to ffmpeg-cvslog-le...@ffmpeg.org