[FFmpeg-devel] [patch] 6 channelrawaudioinputresultsininvalid PCM packet error

Michael Niedermayer michaelni
Sun Nov 16 22:12:37 CET 2008


On Fri, Nov 14, 2008 at 02:28:50PM -0800, Baptiste Coudurier wrote:
> Michael Niedermayer wrote:
> > On Fri, Nov 14, 2008 at 10:52:37AM -0800, Baptiste Coudurier wrote:
> >> Michael Niedermayer wrote:
> >>> On Wed, Nov 12, 2008 at 04:30:12PM -0800, Phil Rutschman wrote:
> >>>>> your original logic generates packets that are not a multiple of 512
> >>>> or
> >>>>> 1024 thus not a multiple of disk sectors, this seems not ideal
> >>>> It generates these packets only in cases which currently fail entirely.
> >>>> While this may not be ideal (at least, if there is neither OS nor C
> >>>> library caching going on), it has the virtue of solving the problem at
> >>>> hand without changing current behavior.
> >>>>
> >>>>> in principle updating the regression test checksums would be fine, but
> >>>>> why does g726 change? this looks like there is something wrong in g726
> >>>>> which has to be found and fixed ...
> >>>> It is worth observing that the size of the mov and mkv files change, not
> >>>> just their checksum. When I extract the raw audio data from
> >>>> tests/data/a-pcm_s16be.mov and strip the header, the file matches the
> >>>> original asynth1.sw file except that it is not quite as long. Reducing
> >>>> RAW_PACKET_SIZE increases the size of the resulting mov file, and
> >>>> conversely increasing it results in a smaller mov.
> >>>>
> >>>> Something odd overall is clearly happening related to RAW_PACKET_SIZE,
> >>>> which may or may not be related to the g726 issue, but I don't currently
> >>>> have the time to investigate the specifics of either.
> >>> so the summary is we need some volunteer to fix
> >>> 1. g726
> >>> 2. mov/mkv loosing some samples depending on RAW_PACKET_SIZE
> >>>
> >> Huh ? If there is a problem with mov I'll fix it right now.
> > 
> > I dont know if there is, i just added mov because phil said:
> > "It is worth observing that the size of the mov and mkv files change, not
> >  just their checksum. When I extract the raw audio data from
> >  tests/data/a-pcm_s16be.mov and strip the header, the file matches the
> >  original asynth1.sw file except that it is not quite as long."
> >                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > 
> > ive not confirmed this or investigated at all ...
> > 
> 
> What about this patch ? Regression tests pass.
[...]
> Index: libavformat/raw.c
> ===================================================================
> --- libavformat/raw.c	(revision 15823)
> +++ libavformat/raw.c	(working copy)
> @@ -115,6 +115,13 @@
>              st->codec->sample_rate = ap->sample_rate;
>              if(ap->channels) st->codec->channels = ap->channels;
>              else             st->codec->channels = 1;
> +            st->codec->bits_per_coded_sample = av_get_bits_per_sample(st->codec->codec_id);
> +            assert(st->codec->bits_per_coded_sample > 0);
> +            if (!st->codec->channels) {
> +                av_log(s, AV_LOG_ERROR, "channels is not set\n");
> +                return -1;
> +            }

i dont see how this if() could be true


> +            st->codec->block_align = st->codec->bits_per_coded_sample*st->codec->channels/8;
>              av_set_pts_info(st, 64, 1, st->codec->sample_rate);
>              break;
>          case CODEC_TYPE_VIDEO:
> @@ -139,9 +146,9 @@
>  static int raw_read_packet(AVFormatContext *s, AVPacket *pkt)
>  {
>      int ret, size, bps;
> -    //    AVStream *st = s->streams[0];
> +    AVStream *st = s->streams[0];
>  
> -    size= RAW_PACKET_SIZE;
> +    size= (RAW_PACKET_SIZE/st->codec->block_align)*st->codec->block_align;

i think i prefer if the packet size contains a constant number of samples
across channels.


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Dictatorship naturally arises out of democracy, and the most aggravated
form of tyranny and slavery out of the most extreme liberty. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20081116/e92cd622/attachment.pgp>



More information about the ffmpeg-devel mailing list