[FFmpeg-devel] [PATCH] avcodec: add ATRAC Advanced Lossless decoders

Paul B Mahol onemda at gmail.com
Tue Jan 31 19:29:03 EET 2017


On 1/31/17, Michael Niedermayer <michaelni at gmx.at> wrote:
> On Tue, Jan 31, 2017 at 04:17:19PM +0100, Paul B Mahol wrote:
>> On 1/31/17, Michael Niedermayer <michaelni at gmx.at> wrote:
>> > On Sun, Jan 29, 2017 at 06:39:21PM +0100, Paul B Mahol wrote:
>> >> Only lossy part is decoded for now.
>> >>
>> >> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>> >> ---
>> > [...]
>> >>  static int oma_read_packet(AVFormatContext *s, AVPacket *pkt)
>> >>  {
>> >>      OMAContext *oc  = s->priv_data;
>> >> -    AVStream *st    = s->streams[0];
>> >> -    int packet_size = st->codecpar->block_align;
>> >> -    int byte_rate   = st->codecpar->bit_rate >> 3;
>> >> -    int64_t pos     = avio_tell(s->pb);
>> >> -    int ret         = av_get_packet(s->pb, pkt, packet_size);
>> >> -
>> >> -    if (ret < packet_size)
>> >> -        pkt->flags |= AV_PKT_FLAG_CORRUPT;
>> >> -
>> >> -    if (ret < 0)
>> >> -        return ret;
>> >> -    if (!ret)
>> >> -        return AVERROR_EOF;
>> >> -
>> >> -    pkt->stream_index = 0;
>> >> -
>> >> -    if (pos >= oc->content_start && byte_rate > 0) {
>> >> -        pkt->pts =
>> >> -        pkt->dts = av_rescale(pos - oc->content_start,
>> >> st->time_base.den,
>> >> -                              byte_rate *
>> >> (int64_t)st->time_base.num);
>> >> -    }
>> >> -
>> >> -    if (oc->encrypted) {
>> >> -        /* previous unencrypted block saved in IV for
>> >> -         * the next packet (CBC mode) */
>> >> -        if (ret == packet_size)
>> >> -            av_des_crypt(oc->av_des, pkt->data, pkt->data,
>> >> -                         (packet_size >> 3), oc->iv, 1);
>> >> -        else
>> >> -            memset(oc->iv, 0, 8);
>> >> -    }
>> >> -
>> >> -    return ret;
>> >> +    return oc->read_packet(s, pkt);
>> >>  }
>> >
>> > moving this into read_packet() could be done in a seperate patch
>> >
>> >
>> >>
>> >>  static int oma_read_probe(AVProbeData *p)
>> >> @@ -491,8 +571,14 @@ static int oma_read_seek(struct AVFormatContext
>> >> *s,
>> >>                           int stream_index, int64_t timestamp, int
>> >> flags)
>> >>  {
>> >>      OMAContext *oc = s->priv_data;
>> >> -    int64_t err = ff_pcm_read_seek(s, stream_index, timestamp,
>> >> flags);
>> >> +    AVStream *st = s->streams[0];
>> >> +    int64_t err;
>> >> +
>> >> +    if (st->codecpar->codec_id == AV_CODEC_ID_ATRAC3PAL ||
>> >> +        st->codecpar->codec_id == AV_CODEC_ID_ATRAC3AL)
>> >
>> >> +        return -1;
>> >
>> > should be a AVERROR code
>>
>> This is not error, it makes seeking possible, using other error codes
>> is bad idea.
>
> It would be better to use a named identifier than a litteral number
> normally we use AVERROR_*, i would argue that oma_read_seek() did not
> seek so it didnt succeed but if you prefer this to be called something
> else than AVERROR_* sure iam perfectly fine with what you prefer.
>
> It was the use of a litteral number (which is also undocumented for
> read_seek() except by code returning -1) that i wanted to comment on

-1 means use generice seeking.


More information about the ffmpeg-devel mailing list