annotate aacsbr.h @ 11557:53822d92c3f7 libavcodec

Make sure the EC code does not attempt to use inter based concealment if there is no reference frame available. (this can happen because the EC code will attempt to use reference frames even for I/IDR frames)
author michael
date Tue, 30 Mar 2010 20:46:46 +0000
parents e340262ba532
children 7dd2a45249a9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11401
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
1 /*
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
2 * AAC Spectral Band Replication function declarations
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
3 * Copyright (c) 2008-2009 Robert Swain ( rob opendot cl )
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
4 * Copyright (c) 2010 Alex Converse <alex.converse@gmail.com>
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
5 *
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
6 * This file is part of FFmpeg.
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
7 *
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
12 *
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
16 * Lesser General Public License for more details.
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
17 *
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
21 */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
22
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
23 /**
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
24 * @file libavcodec/aacsbr.h
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
25 * AAC Spectral Band Replication function declarations
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
26 * @author Robert Swain ( rob opendot cl )
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
27 */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
28
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
29 #ifndef AVCODEC_AACSBR_H
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
30 #define AVCODEC_AACSBR_H
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
31
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
32 #include "get_bits.h"
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
33 #include "aac.h"
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
34 #include "sbr.h"
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
35
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
36 /** Initialize SBR. */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
37 av_cold void ff_aac_sbr_init(void);
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
38 /** Initialize one SBR context. */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
39 av_cold void ff_aac_sbr_ctx_init(SpectralBandReplication *sbr);
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
40 /** Close one SBR context. */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
41 av_cold void ff_aac_sbr_ctx_close(SpectralBandReplication *sbr);
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
42 /** Decode one SBR element. */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
43 int ff_decode_sbr_extension(AACContext *ac, SpectralBandReplication *sbr,
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
44 GetBitContext *gb, int crc, int cnt, int id_aac);
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
45 /** Dequantized all channels in one SBR element. */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
46 void ff_sbr_dequant(AACContext *ac, SpectralBandReplication *sbr, int id_aac);
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
47 /** Apply dequantized SBR to a single AAC channel. */
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
48 void ff_sbr_apply(AACContext *ac, SpectralBandReplication *sbr, int ch,
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
49 const float* in, float* out);
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
50
e340262ba532 Add an HE-AAC v1 decoder.
alexc
parents:
diff changeset
51 #endif /* AVCODEC_AACSBR_H */