[nut]: r183 - in trunk/libnut: muxer.c nut.h

Author: ods15 Date: Sat Nov 4 15:03:54 2006 New Revision: 183 Modified: trunk/libnut/muxer.c trunk/libnut/nut.h Log: implement nut_write_info() in muxer, though spec is unclear about legality... Modified: trunk/libnut/muxer.c ============================================================================== --- trunk/libnut/muxer.c (original) +++ trunk/libnut/muxer.c Sat Nov 4 15:03:54 2006 @@ -226,7 +226,7 @@ put_header(nut->o, tmp, nut->tmp_buffer2, STREAM_STARTCODE, 0); } -static void put_info(nut_context_t * nut, nut_info_packet_t * info) { +static void put_info(nut_context_t * nut, const nut_info_packet_t * info) { output_buffer_t * tmp = clear_buffer(nut->tmp_buffer); int i; @@ -455,13 +455,9 @@ return size; } -void nut_write_frame(nut_context_t * nut, const nut_packet_t * fd, const uint8_t * buf) { - stream_context_t * sc = &nut->sc[fd->stream]; - output_buffer_t * tmp; - int i; - - if (bctello(nut->o) > (1 << 23)) { // main header repetition - i = 23; // ### magic value for header repetition +static void check_header_repetition(nut_context_t * nut) { + if (bctello(nut->o) > (1 << 23)) { + int i = 23; // ### magic value for header repetition if (bctello(nut->o) > (1 << 25)) { for (i = 26; bctello(nut->o) > (1 << i); i++); i--; @@ -470,6 +466,14 @@ put_headers(nut); } } +} + +void nut_write_frame(nut_context_t * nut, const nut_packet_t * fd, const uint8_t * buf) { + stream_context_t * sc = &nut->sc[fd->stream]; + output_buffer_t * tmp; + int i; + + check_header_repetition(nut); // distance syncpoints if (nut->last_syncpoint < nut->last_headers || bctello(nut->o) - nut->last_syncpoint + fd->len + frame_header(nut, NULL, fd) > nut->max_distance) put_syncpoint(nut); @@ -500,6 +504,12 @@ else sc->eor = 0; } +void nut_write_info(nut_context_t * nut, const nut_info_packet_t * info) { + check_header_repetition(nut); + nut->last_headers = bctello(nut->o); // to force syncpoint writing after the info header + put_info(nut, info); +} + nut_context_t * nut_muxer_init(const nut_muxer_opts_t * mopts, const nut_stream_header_t s[], const nut_info_packet_t info[]) { nut_context_t * nut; int i; Modified: trunk/libnut/nut.h ============================================================================== --- trunk/libnut/nut.h (original) +++ trunk/libnut/nut.h Sat Nov 4 15:03:54 2006 @@ -129,6 +129,7 @@ /** nut_write_frame does magic, it writes headers */ void nut_write_frame(nut_context_t * nut, const nut_packet_t * p, const uint8_t * buf); +/** the use of this function is illegal in non realtime streams!! */ void nut_write_info(nut_context_t * nut, const nut_info_packet_t * info); /** do the same as the above function, but deal with frame reordering */
participants (1)
-
ods15