[FFmpeg-devel] [PATCH] AAC decoder

Michael Niedermayer michaelni
Thu Jun 19 16:37:47 CEST 2008


On Fri, Jun 13, 2008 at 01:47:29PM +0100, Robert Swain wrote:
> 2008/6/12 Michael Niedermayer <michaelni at gmx.at>:
> > On Tue, Jun 03, 2008 at 01:26:55AM +0100, Robert Swain wrote:
> >> 2008/6/2 Robert Swain <robert.swain at gmail.com>:
> >> > You'll be happy to know that I'm working on flattening the channel element
> >> > structs (sce_struct, cpe_struct, cc_struct) into one (che_struct). When I
> >> > submit the patch, I expect it will take an iteration or two to be clean
> >> > enough to commit but it has simplified a lot of the code so far. :) There
> >> > will also be some considerations about whether to dynamically allocate some
> >> > things if they're too large to be allocated with every channel element.
> >>
> >> See attached. It's a rather large patch and I tried to make it clean
> >> (not affecting indentation, etc. as I went along) but maybe you will
> >> want it to be split into a number of commits somehow. I don't know
> >> whether it will be particularly beneficial but the simplifications
> >> resulting from the changes to the structs could be committed
> >> separately. It's been tested with stereo and 5.1 files and seems to be
> >> working fine. Comments welcome.
> >
> > Id like it split in a number of patches first.
> > * changing the 4 different structs to 1 array of the same struct
> > * code simplifications
> > * indention fixup to otherwise unchanged lines
> >
> > being a possibility
> 
> See attached.
> 
> Note that I ordered the elements of the che_struct such that the
> cpe_struct code didn't need to be changed until removal of cpe_struct
> was desirable. I hope these are OK. :)
> 
> Thanks,
> Rob

> From 82f9fa27ec080bbe42279558269fc90d646bdc9a Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 11:38:34 +0100
> Subject: [PATCH] Add code necessary to switch to a generic channel element struct
[...]
> +typedef struct {
> +    // CPE specific
> +    int common_window;     ///< Set if channels share a common 'ics_struct' in bitstream
> +    ms_struct ms;
> +    // Shared
> +    sce_struct ch[2];
> +    // CCE specific
> +    coupling_struct coup;
> +} che_struct;

Ive thought that maybe some of these could be placed at the end and only
allocated when needed, either way that would be for a different and
future patch. (it could also be several structs which share the first few
fields)

otherswise ok


> From 025a1d319ad465448edf365a586a77c8186414b9 Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 12:29:11 +0100
> Subject: [PATCH] - Switch to using che_struct in program_config_struct and AACContext
>  - Alter code accordingly such that it is still as functional as before

ok


[...]
> From 5412f7b493fb38471f05b4723256a7d3d9855e2c Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 13:01:11 +0100
> Subject: [PATCH] Switch mixdown code to use che_struct

ok


[...]
> From cb1466531de8a533f528b7cc1a734b1236a048ee Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 13:04:42 +0100
> Subject: [PATCH] Make remaining code that uses cpe_struct use che_struct instead

ok


[...]


> From 219106c85ff29d54a127020ae28f39326c10ca6b Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 13:06:08 +0100
> Subject: [PATCH] Remove unused code

ok

[...]


> From 99acb20d34f87ad4bc3d1e346f469ccb8ec43452 Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 13:25:47 +0100
> Subject: [PATCH] Make code simplifications enabled by previous commits

ok

[...]


> From b1d801dee3dec324c5927892ab0df1399d9c57e5 Mon Sep 17 00:00:00 2001
> From: Robert Swain <rob at opendot.cl>
> Date: Fri, 13 Jun 2008 13:35:43 +0100
> Subject: [PATCH] Cosmetics
> 
> ---
>  aac.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 

> diff --git a/aac.c b/aac.c
> index 8a86885..b473058 100644
> --- a/aac.c
> +++ b/aac.c
> @@ -491,9 +491,9 @@ static int output_configure(AACContext *ac, program_config_struct *newpcs) {
>          channels += !!pcs->che_type[ID_SCE][i] + !!pcs->che_type[ID_CPE][i] * 2 + !!pcs->che_type[ID_LFE][i];
>  
>          for(j = 0; j < 4; j++) {
> -            if(pcs->che_type[j][i] && !ac->che[j][i]) {
> +            if(pcs->che_type[j][i] && !ac->che[j][i])
>                  ac->che[j][i] = av_mallocz(sizeof(che_struct));
> -        } else
> +            else

i prefer

if(){
}else

because it results in cleaner looking diffs if something is added while we
dont loose a line to a '}'


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

Everything should be made as simple as possible, but not simpler.
-- Albert Einstein
-------------- 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/20080619/18e8ba84/attachment.pgp>



More information about the ffmpeg-devel mailing list