root/trunk/bitstream_info.h

Revision 1008, 1.6 kB (checked in by gbooker, 1 week ago)

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
14 extern "C" {
15 #endif
16
17 int parse_ac3_bitstream(AudioStreamBasicDescription *asbd, AudioChannelLayout *acl, uint8_t *buffer, int buff_size, bool wellFramed);
18
19 typedef struct FFusionParserContext
20 {
21         struct AVCodecParserContext     *pc;
22         struct AVCodecContext   *avctx;
23         struct FFusionParser    *parserStructure;
24         void                                    *internalContext;
25 } FFusionParserContext;
26        
27 typedef 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
41 typedef enum {
42         FFUSION_CANNOT_DECODE,
43         FFUSION_PREFER_NOT_DECODE,
44         FFUSION_PREFER_DECODE,
45 } FFusionDecodeAbilities;
46
47 void initFFusionParsers();
48 FFusionParserContext *ffusionParserInit(int codec_id);
49 int ffusionParseExtraData(FFusionParserContext *parser, const uint8_t *buf, int buf_size);
50 int ffusionParse(FFusionParserContext *parser, const uint8_t *buf, int buf_size, int *out_buf_size, int *type, int *skippable);
51 void ffusionLogDebugInfo(FFusionParserContext *parser, FILE *log);
52 FFusionDecodeAbilities ffusionIsParsedVideoDecodable(FFusionParserContext *parser);
53
54 #ifdef __cplusplus
55 }
56 #endif
Note: See TracBrowser for help on using the browser.