[PATCH] avformat/matroska: Add support for A_ATRAC/AT1
Signed-off-by: asivery <asivery@protonmail.com> --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext *s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; /* Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1
On 3/6/23, asivery <asivery@protonmail.com> wrote:
Signed-off-by: asivery <asivery@protonmail.com> --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
where is this defined?
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext *s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; /* Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
It's been added recently. Here's the definition: https://github.com/ietf-wg-cellar/matroska-specification/blob/master/codec_s... ------- Original Message ------- On Monday, March 6th, 2023 at 7:39 PM, Paul B Mahol <onemda@gmail.com> wrote:
On 3/6/23, asivery asivery@protonmail.com wrote:
Signed-off-by: asivery asivery@protonmail.com --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
where is this defined?
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; / Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
I'd appreciate it if someone took a look at this. If there's anything I need to change to make this patch viable for merging, please let me know. Best regards, asivery ------- Original Message ------- On Monday, March 6th, 2023 at 7:51 PM, asivery <asivery@protonmail.com> wrote:
It's been added recently. Here's the definition: https://github.com/ietf-wg-cellar/matroska-specification/blob/master/codec_s...
------- Original Message ------- On Monday, March 6th, 2023 at 7:39 PM, Paul B Mahol onemda@gmail.com wrote:
On 3/6/23, asivery asivery@protonmail.com wrote:
Signed-off-by: asivery asivery@protonmail.com --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
where is this defined?
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; / Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Hello, apologies for bothering you all with this, but if anyone could take a look at this patch it would be great. The only other container that supports ATRAC1 is AEA, and it's not that good of a format since it has no magic number, and therefore is easily detected incorrectly. Thank you in advance. ------- Original Message ------- On Monday, April 17th, 2023 at 2:27 AM, asivery <asivery@protonmail.com> wrote:
I'd appreciate it if someone took a look at this. If there's anything I need to change to make this patch viable for merging, please let me know.
Best regards, asivery ------- Original Message ------- On Monday, March 6th, 2023 at 7:51 PM, asivery asivery@protonmail.com wrote:
It's been added recently. Here's the definition: https://github.com/ietf-wg-cellar/matroska-specification/blob/master/codec_s...
------- Original Message ------- On Monday, March 6th, 2023 at 7:39 PM, Paul B Mahol onemda@gmail.com wrote:
On 3/6/23, asivery asivery@protonmail.com wrote:
Signed-off-by: asivery asivery@protonmail.com --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
where is this defined?
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; / Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
asivery:
Hello, apologies for bothering you all with this, but if anyone could take a look at this patch it would be great. The only other container that supports ATRAC1 is AEA, and it's not that good of a format since it has no magic number, and therefore is easily detected incorrectly.
Thank you in advance.
Sorry for having missed this. I will look at it tomorrow. - Andreas
------- Original Message ------- On Monday, April 17th, 2023 at 2:27 AM, asivery <asivery@protonmail.com> wrote:
I'd appreciate it if someone took a look at this. If there's anything I need to change to make this patch viable for merging, please let me know.
Best regards, asivery ------- Original Message ------- On Monday, March 6th, 2023 at 7:51 PM, asivery asivery@protonmail.com wrote:
It's been added recently. Here's the definition: https://github.com/ietf-wg-cellar/matroska-specification/blob/master/codec_s...
------- Original Message ------- On Monday, March 6th, 2023 at 7:39 PM, Paul B Mahol onemda@gmail.com wrote:
On 3/6/23, asivery asivery@protonmail.com wrote:
Signed-off-by: asivery asivery@protonmail.com --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
where is this defined?
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; / Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1
Hi, it's really not a problem. Thanks and please let me know if I need to change anything for this to be merged. ------- Original Message ------- On Saturday, June 17th, 2023 at 3:41 AM, Andreas Rheinhardt <andreas.rheinhardt@outlook.com> wrote:
asivery:
Hello, apologies for bothering you all with this, but if anyone could take a look at this patch it would be great. The only other container that supports ATRAC1 is AEA, and it's not that good of a format since it has no magic number, and therefore is easily detected incorrectly.
Thank you in advance.
Sorry for having missed this. I will look at it tomorrow.
- Andreas
------- Original Message ------- On Monday, April 17th, 2023 at 2:27 AM, asivery asivery@protonmail.com wrote:
I'd appreciate it if someone took a look at this. If there's anything I need to change to make this patch viable for merging, please let me know.
Best regards, asivery ------- Original Message ------- On Monday, March 6th, 2023 at 7:51 PM, asivery asivery@protonmail.com wrote:
It's been added recently. Here's the definition: https://github.com/ietf-wg-cellar/matroska-specification/blob/master/codec_s...
------- Original Message ------- On Monday, March 6th, 2023 at 7:39 PM, Paul B Mahol onemda@gmail.com wrote:
On 3/6/23, asivery asivery@protonmail.com wrote:
Signed-off-by: asivery asivery@protonmail.com --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
where is this defined?
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; / Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
asivery:
Signed-off-by: asivery <asivery@protonmail.com> --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext *s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; /* Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1
This patch is broken. The indentation is off. - Andreas
Andreas Rheinhardt:
asivery:
Signed-off-by: asivery <asivery@protonmail.com> --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext *s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; /* Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1
This patch is broken. The indentation is off.
- Andreas
Apart from this: The result of the multiplication may not fit into an int; looking at the other atrac1 code it seems that we only support mono and stereo files. Is this a limitation of FFmpeg or of the format? - Andreas
I apologize for not having responded earlier. I've attached the updated patch.
From 68c77320954e44a7f02e95537fc9a6436da7549c Mon Sep 17 00:00:00 2001 From: asivery <asivery@protonmail.com> Date: Sun, 11 Feb 2024 23:13:07 +0100 Subject: [PATCH] avformat/matroska: Add support for A_ATRAC/AT1
Signed-off-by: asivery <asivery@protonmail.com> --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 8 ++++++++ libavformat/matroskaenc.c | 1 + 3 files changed, 10 insertions(+) diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 5878594e68..ae9ecc8207 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -53,6 +53,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 8f000f86be..1bb6e8605a 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2779,6 +2779,14 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters *par, return AVERROR(ENOMEM); break; } + case AV_CODEC_ID_ATRAC1: + /* ATRAC1 uses a constant frame size. + * Typical ATRAC1 streams are either mono or stereo. + * At most, ATRAC1 was used to store 8 channels of audio. */ + if (track->audio.channels > 8) + return AVERROR_INVALIDDATA; + par->block_align = track->audio.channels * 212; + break; case AV_CODEC_ID_FLAC: if (track->codec_priv.size) { ret = matroska_parse_flac(s, track, extradata_offset); diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 1457a6890c..aa25657f8f 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -3483,6 +3483,7 @@ static const AVCodecTag additional_audio_tags[] = { { AV_CODEC_ID_QDM2, 0xFFFFFFFF }, { AV_CODEC_ID_RA_144, 0xFFFFFFFF }, { AV_CODEC_ID_TRUEHD, 0xFFFFFFFF }, + { AV_CODEC_ID_ATRAC1, 0xFFFFFFFF }, { AV_CODEC_ID_NONE, 0xFFFFFFFF } }; -- 2.34.1 On Friday, August 4th, 2023 at 7:30 PM, Andreas Rheinhardt <andreas.rheinhardt@outlook.com> wrote:
Andreas Rheinhardt:
asivery:
Signed-off-by: asivery asivery@protonmail.com --- libavformat/matroska.c | 1 + libavformat/matroskadec.c | 2 ++ 2 files changed, 3 insertions(+)
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 90d94b65bf..37305a523c 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -55,6 +55,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1}, {"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d582f566a2..0aa8e6f3b3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2795,6 +2795,8 @@ static int matroska_parse_tracks(AVFormatContext s) track->audio.frame_size); if (!track->audio.buf) return AVERROR(ENOMEM); + } else if (codec_id == AV_CODEC_ID_ATRAC1) { + st->codecpar->block_align = track->audio.channels * 212; / Constant ATRAC frame size */ } else if (codec_id == AV_CODEC_ID_FLAC && track->codec_priv.size) { ret = matroska_parse_flac(s, track, &extradata_offset); if (ret < 0) -- 2.34.1
This patch is broken. The indentation is off.
- Andreas
Apart from this: The result of the multiplication may not fit into an int; looking at the other atrac1 code it seems that we only support mono and stereo files. Is this a limitation of FFmpeg or of the format?
- Andreas
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
asivery via ffmpeg-devel:
I apologize for not having responded earlier. I've attached the updated patch.
From 68c77320954e44a7f02e95537fc9a6436da7549c Mon Sep 17 00:00:00 2001 From: asivery <asivery@protonmail.com> Date: Sun, 11 Feb 2024 23:13:07 +0100 Subject: [PATCH] avformat/matroska: Add support for A_ATRAC/AT1
Signed-off-by: asivery <asivery@protonmail.com> ---
Send your patch either via git send-email or as an attachment; if you have comments for your patch (that are not supposed to be part of the eventual commit and not its commit message), then put them here, in between the --- and the affected files.
libavformat/matroska.c | 1 + libavformat/matroskadec.c | 8 ++++++++ libavformat/matroskaenc.c | 1 + 3 files changed, 10 insertions(+)
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 5878594e68..ae9ecc8207 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -53,6 +53,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1},
This audio part of this list is ordered by the Matroska CodecID (i.e. the string on the left). Please keep it that way.
{"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 8f000f86be..1bb6e8605a 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2779,6 +2779,14 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters *par, return AVERROR(ENOMEM); break; } + case AV_CODEC_ID_ATRAC1: + /* ATRAC1 uses a constant frame size. + * Typical ATRAC1 streams are either mono or stereo. + * At most, ATRAC1 was used to store 8 channels of audio. */ + if (track->audio.channels > 8) + return AVERROR_INVALIDDATA; + par->block_align = track->audio.channels * 212; + break; case AV_CODEC_ID_FLAC: if (track->codec_priv.size) { ret = matroska_parse_flac(s, track, extradata_offset); diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 1457a6890c..aa25657f8f 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -3483,6 +3483,7 @@ static const AVCodecTag additional_audio_tags[] = { { AV_CODEC_ID_QDM2, 0xFFFFFFFF }, { AV_CODEC_ID_RA_144, 0xFFFFFFFF }, { AV_CODEC_ID_TRUEHD, 0xFFFFFFFF }, + { AV_CODEC_ID_ATRAC1, 0xFFFFFFFF },
Please keep this list sorted alphabetically.
{ AV_CODEC_ID_NONE, 0xFFFFFFFF } };
I've attached the updated patch. Both new entries are now placed in an alphabetically correct way in their appropriate lists. On Monday, February 12th, 2024 at 11:53 AM, Andreas Rheinhardt <andreas.rheinhardt@outlook.com> wrote:
asivery via ffmpeg-devel:
I apologize for not having responded earlier. I've attached the updated patch.
From 68c77320954e44a7f02e95537fc9a6436da7549c Mon Sep 17 00:00:00 2001 From: asivery asivery@protonmail.com Date: Sun, 11 Feb 2024 23:13:07 +0100 Subject: [PATCH] avformat/matroska: Add support for A_ATRAC/AT1
Signed-off-by: asivery asivery@protonmail.com ---
Send your patch either via git send-email or as an attachment; if you have comments for your patch (that are not supposed to be part of the eventual commit and not its commit message), then put them here, in between the --- and the affected files.
libavformat/matroska.c | 1 + libavformat/matroskadec.c | 8 ++++++++ libavformat/matroskaenc.c | 1 + 3 files changed, 10 insertions(+)
diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 5878594e68..ae9ecc8207 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -53,6 +53,7 @@ const CodecTags ff_mkv_codec_tags[]={ {"A_REAL/ATRC" , AV_CODEC_ID_ATRAC3}, {"A_REAL/COOK" , AV_CODEC_ID_COOK}, {"A_REAL/SIPR" , AV_CODEC_ID_SIPR}, + {"A_ATRAC/AT1" , AV_CODEC_ID_ATRAC1},
This audio part of this list is ordered by the Matroska CodecID (i.e. the string on the left). Please keep it that way.
{"A_TRUEHD" , AV_CODEC_ID_TRUEHD}, {"A_TTA1" , AV_CODEC_ID_TTA}, {"A_VORBIS" , AV_CODEC_ID_VORBIS}, diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 8f000f86be..1bb6e8605a 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2779,6 +2779,14 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters par, return AVERROR(ENOMEM); break; } + case AV_CODEC_ID_ATRAC1: + / ATRAC1 uses a constant frame size. + * Typical ATRAC1 streams are either mono or stereo. + * At most, ATRAC1 was used to store 8 channels of audio. */ + if (track->audio.channels > 8) + return AVERROR_INVALIDDATA; + par->block_align = track->audio.channels * 212; + break; case AV_CODEC_ID_FLAC: if (track->codec_priv.size) { ret = matroska_parse_flac(s, track, extradata_offset); diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 1457a6890c..aa25657f8f 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -3483,6 +3483,7 @@ static const AVCodecTag additional_audio_tags[] = { { AV_CODEC_ID_QDM2, 0xFFFFFFFF }, { AV_CODEC_ID_RA_144, 0xFFFFFFFF }, { AV_CODEC_ID_TRUEHD, 0xFFFFFFFF }, + { AV_CODEC_ID_ATRAC1, 0xFFFFFFFF },
Please keep this list sorted alphabetically.
{ AV_CODEC_ID_NONE, 0xFFFFFFFF } };
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
asivery via ffmpeg-devel:
I've attached the updated patch. Both new entries are now placed in an alphabetically correct way in their appropriate lists.
Applied. - Andreas
participants (3)
-
Andreas Rheinhardt -
asivery -
Paul B Mahol