[FFmpeg-devel] [PATCH 4/6] Fix detecting ATRAC3 audio from MPS files
Michael Niedermayer
michael at niedermayer.cc
Tue Jan 2 23:31:43 EET 2018
On Sun, Dec 31, 2017 at 05:46:05PM +0800, misty at brew.sh wrote:
> From: Misty De Meo <mistydemeo at gmail.com>
>
> MPS files are MPEG files used on PSP Video discs. They lack
> the PSMF header used by .pms files, and so the special casing
> in the original patch fails to support their audio. This patch
> fixes this by unconditionally reading a new byte for the startcode
> for PRIVATE_STREAM_1 sections, and doing the comparison on that
> to find ATRAC-3 streams. In my testing, it works fine for both MPS
> and PSMF files.
> ---
> Changelog | 1 +
> libavformat/mpeg.c | 38 ++++++++++++++------------------------
> libavformat/mpeg.h | 1 +
> 3 files changed, 16 insertions(+), 24 deletions(-)
>
> diff --git a/Changelog b/Changelog
> index ee48876128..67f28ea839 100644
> --- a/Changelog
> +++ b/Changelog
> @@ -27,6 +27,7 @@ version <next>:
> - video setrange filter
> - nsp demuxer
> - support LibreSSL (via libtls)
> +- ATRAC-3 support for Sony PSP MPEG files
>
>
> version 3.4:
> diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
> index 895c6fb231..a366ece0ed 100644
> --- a/libavformat/mpeg.c
> +++ b/libavformat/mpeg.c
> @@ -128,7 +128,6 @@ typedef struct MpegDemuxContext {
> int sofdec;
> int dvd;
> int imkh_cctv;
> - int sony_psmf; // true if Play Station Movie file signature is present
> #if CONFIG_VOBSUB_DEMUXER
> AVFormatContext *sub_ctx;
> FFDemuxSubtitlesQueue q[32];
> @@ -148,8 +147,6 @@ static int mpegps_read_header(AVFormatContext *s)
> avio_get_str(s->pb, 6, buffer, sizeof(buffer));
> if (!memcmp("IMKH", buffer, 4)) {
> m->imkh_cctv = 1;
> - } else if (!memcmp("PSMF00", buffer, 6)) {
> - m->sony_psmf = 1;
> } else if (!memcmp("Sofdec", buffer, 6)) {
> m->sofdec = 1;
> } else
> @@ -444,7 +441,7 @@ redo:
> goto redo;
> }
>
> - if (startcode == PRIVATE_STREAM_1 && !m->sony_psmf) {
> + if (startcode == PRIVATE_STREAM_1) {
> startcode = avio_r8(s->pb);
> len--;
> }
> @@ -544,28 +541,21 @@ redo:
> else
> request_probe= 1;
> type = AVMEDIA_TYPE_VIDEO;
> - } else if (startcode == PRIVATE_STREAM_1 && m->sony_psmf) {
> - uint8_t stream_id;
> -
> - if (len < 2)
> - goto skip;
> - stream_id = avio_r8(s->pb);
> + // Sony PSP video with ATRAC-3 audio
> + } else if (!(startcode & STREAM_TYPE_AUDIO_ATRAC3)) {
this looks a bit odd
shouldnt this test more than 4 bits of startcode ?
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Avoid a single point of failure, be that a person or equipment.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180102/760ceb9a/attachment.sig>
More information about the ffmpeg-devel
mailing list