On Fri, Mar 28, 2008 at 06:32:38PM +0100, Bartlomiej Wolowiec wrote:
On czwartek, 27 marca 2008, Michael Niedermayer wrote:
1. enum AACAC3FrameFlag{ FRAME_COMPLETE, FRAME_START, FRAME_CONTINUATION }; removal of stream_type z AACAC3ParseContext, change of int (*sync)(struct AACAC3ParseContext *hdr_info) to int (*sync)(struct AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag)
2.change of stream_type to frame_type
3.change of ff_aac_ac3_parse to make it react correctly to result returned in flag.
ok
this is the first patch: "removal of stream_type in AACAC3ParseContext and adding AACAC3FrameFlag" [...]
+typedef enum{ + /** finishes portions of data */ + FRAME_COMPLETE, + /** starts portions of data + * (if there are any frames in the buffer they're send) */ + FRAME_START, + /** continues portions of data (adds them to buffer) */ + FRAME_CONTINUATION +}AACAC3FrameFlag;
[...]
-static int ac3_sync(AACAC3ParseContext *hdr_info) +static int ac3_sync(AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag) { int err; AC3HeaderInfo hdr; @@ -137,6 +137,9 @@ hdr_info->bit_rate = hdr.bit_rate; hdr_info->channels = hdr.channels; hdr_info->samples = AC3_FRAME_SIZE; + + *flag = (hdr.stream_type == EAC3_STREAM_TYPE_INDEPENDENT)? + FRAME_START:FRAME_CONTINUATION; return hdr.frame_size; }
There are 3 types in EAC3 Type 0: always start a frame and may or may not have further parts following Type 1: never start a frame and may or may not have further parts following Type 2: always start a frame and never have further parts following That is |T0 | T0 T1 | T0 T1 T1 ... T1 | T2 | are all and the only valid combinations accoriding to my spec I cannot map this to your code at all [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Complexity theory is the science of finding the exact solution to an approximation. Benchmarking OTOH is finding an approximation of the exact