source: trunk/bitstream_info.h @ 1008

Revision 1008, 1.6 KB checked in by gbooker, 6 years ago (diff)

Added ability to force Perian's use with certain apps. This fixes iChat which seems to be incapable of conducting a complete codec search for some reason.
Added the ability to parse more of H.264's sps, in case it might be useful. Currently #ifed out as to not affect performance.

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, bool wellFramed);
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.