[Ffmpeg-devel] [PATCH] THP PCM decoder (GSoC Qualification)
Michael Niedermayer
michaelni
Wed Apr 4 03:21:43 CEST 2007
Hi
On Wed, Apr 04, 2007 at 02:44:18AM +0200, Marco Gerards wrote:
> Michael Niedermayer <michaelni at gmx.at> writes:
>
> Hi,
>
> > Hi
> >
> > On Tue, Apr 03, 2007 at 08:59:31PM +0200, Marco Gerards wrote:
> >> Michael Niedermayer <michaelni at gmx.at> writes:
> >>
> >> > Hi
> >> >
> >> > On Tue, Apr 03, 2007 at 03:21:56PM +0200, Marco Gerards wrote:
> >> > [...]
> >> >> In this new patch there are still two issues. For some reason the
> >> >> quality of the sound was not that good. It wasn't as bad as someone
> >> >> reported, for example he said that there were issues with mono sound.
> >> >> I can not reproduce this.
> >> >>
> >> >> The problem is in stereo sound. I have disabled stereo in this patch
> >> >> and the sound is just fine now. To be honest, I am not sure what the
> >> >> problem is. I have tried all kinds of things without much success.
> >> >> Perhaps it is better to commit this first. After that I can fix this
> >> >> with another patch.
> >> >
> >> > hmm did you properly interleave right and left channel samples? that is
> >> > does it work if you decode just the other channel?
> >> > could it be that the encoding is R+L,R-L ? instead of R,L
> >>
> >> I tried about anything. This is the first time I am working with
> >> audio, so I perhaps made a silly mistake.
> >>
> >> What I tried was interleaving the data send to the output buffer. The
> >> PCM data in the THP files is stored in packets. First x samples for
> >> the first channel are stored, after that x samples for the second
> >> channel.
> >>
> >> When I decode the other channel it seems to work as well. So I assume
> >> the problem is in how I fill the output buffer and how I tell ffmpeg
> >> the format (stereo, interleaved samples) of this data. How does one
> >> in general deal with stereo from a decoder?
> >
> > stereo in ffmpeg is always
> > channel0-sample0, channel1-sample0, channel0-sample1, channel1-sample1, channel0-sample2, channel1-sample2, ...
>
> Well, I have this now and it works... kinda. When I am playing either
> one of the two channels as mono sound, it works. When I am using both
> channels, there is some kind of noise/cracks. The noise is not there
> all the time and it is not very loud, but I am mentioning this because
> there must still be something that I do wrong...
hmm, is AVCodecContext.channels set correctly
does it also sound bad if you dump it to a file or let ffmpeg transcode it
to pcm wav and then play that ... ?
[...]
> + init_get_bits(&gb, src, buf_size * 8);
> + src += buf_size;
> +
> + get_bits(&gb, 32); /* Channel size */
> + samplecnt = get_bits(&gb, 32);
get_bits does have undefined behavior when reading more then 17-25 bits
depending on the used bitreader, get_bits_long() is a better choice
[...]
> + uint8_t index = get_bits (&gb, 4) & 7;
iam curious what the removed bit does, is it always 0 ?
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070404/cbfb7f08/attachment.pgp>
More information about the ffmpeg-devel
mailing list