source: trunk/bitstream_info.h @ 1014

Revision 1014, 1.6 KB checked in by gbooker, 5 years ago (diff)

Apple seems determined to make the Apple TV suck more and more. Now it can no longer passthrough properly framed AC3 data. What's next, breaking all third-party codecs?
Now we no longer use the 'ac-3' fourcc as Apple seems to be incapable of adhering to their own documentation.

Line 
1/*
2 *  bitstream_info.h
3 *  Perian
4 *
5 *  Created by Graham Booker on 1/6/07.
6 *  Copyright 2007 Graham Booker. All rights reserved.
7 *
8 */
9
10#include <AudioToolbox/AudioToolbox.h>
11#include <QuickTime/QuickTime.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17int parse_ac3_bitstream(AudioStreamBasicDescription *asbd, AudioChannelLayout *acl, uint8_t *buffer, int buff_size);
18
19typedef struct FFusionParserContext
20{
21        struct AVCodecParserContext     *pc;
22        struct AVCodecContext   *avctx;
23        struct FFusionParser    *parserStructure;
24        void                                    *internalContext;
25} FFusionParserContext;
26       
27typedef struct FFusionParser
28{
29        struct AVCodecParser *avparse;
30        int internalContextSize;
31        int (*init)(FFusionParserContext *parser);
32        int (*extra_data)(FFusionParserContext *parser,
33                                          const uint8_t *buf, int buf_size);
34        int (*parser_parse)(FFusionParserContext *parser,
35                                                const uint8_t *buf, int buf_size,
36                                                int *out_buf_size,
37                                                int *type, int *skippable);
38        struct FFusionParser *next;
39} FFusionParser;
40
41typedef enum {
42        FFUSION_CANNOT_DECODE,
43        FFUSION_PREFER_NOT_DECODE,
44        FFUSION_PREFER_DECODE,
45} FFusionDecodeAbilities;
46
47void initFFusionParsers();
48FFusionParserContext *ffusionParserInit(int codec_id);
49int ffusionParseExtraData(FFusionParserContext *parser, const uint8_t *buf, int buf_size);
50int ffusionParse(FFusionParserContext *parser, const uint8_t *buf, int buf_size, int *out_buf_size, int *type, int *skippable);
51void ffusionLogDebugInfo(FFusionParserContext *parser, FILE *log);
52FFusionDecodeAbilities ffusionIsParsedVideoDecodable(FFusionParserContext *parser);
53
54#ifdef __cplusplus
55}
56#endif
Note: See TracBrowser for help on using the repository browser.