diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libmpeg2/decode.c | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c index 2d3324c18..380ff624f 100644 --- a/src/libmpeg2/decode.c +++ b/src/libmpeg2/decode.c @@ -356,16 +356,18 @@ static inline int parse_chunk (mpeg2dec_t * mpeg2dec, int code, if (mpeg2dec->is_sequence_needed || (picture->frame_width != picture->coded_picture_width) || (picture->frame_height != picture->coded_picture_height)) { + xine_event_t event; + xine_format_change_data_t data; + remember_metainfo (mpeg2dec); -#if 0 - xine_frame_change_event_t notify_event; - - notify_event.event.type = XINE_EVENT_FRAME_CHANGE; - notify_event.width = picture->coded_picture_width; - notify_event.height = picture->coded_picture_height; - notify_event.aspect = picture->aspect_ratio_information; - xine_send_event(mpeg2dec->xine, ¬ify_event.event); -#endif + event.type = XINE_EVENT_FRAME_FORMAT_CHANGE; + event.stream = mpeg2dec->stream; + event.data = &data; + event.data_length = sizeof(data); + data.width = picture->coded_picture_width; + data.height = picture->coded_picture_height; + data.aspect = picture->aspect_ratio_information; + xine_event_send(mpeg2dec->stream, &event); if (picture->forward_reference_frame) picture->forward_reference_frame->free (picture->forward_reference_frame); @@ -688,7 +690,8 @@ void mpeg2_find_sequence_header (mpeg2dec_t * mpeg2dec, if (mpeg2dec->force_aspect) picture->aspect_ratio_information = mpeg2dec->force_aspect; if (mpeg2dec->is_sequence_needed) { - //xine_frame_change_event_t notify_event; + xine_event_t event; + xine_format_change_data_t data; mpeg2dec->is_sequence_needed = 0; picture->frame_width = picture->coded_picture_width; @@ -696,11 +699,14 @@ void mpeg2_find_sequence_header (mpeg2dec_t * mpeg2dec, remember_metainfo (mpeg2dec); - //notify_event.event.type = XINE_EVENT_FRAME_CHANGE; - //notify_event.width = picture->coded_picture_width; - //notify_event.height = picture->coded_picture_height; - //notify_event.aspect = picture->aspect_ratio_information; - //xine_send_event(mpeg2dec->xine, ¬ify_event.event); + event.type = XINE_EVENT_FRAME_FORMAT_CHANGE; + event.stream = mpeg2dec->stream; + event.data = &data; + event.data_length = sizeof(data); + data.width = picture->coded_picture_width; + data.height = picture->coded_picture_height; + data.aspect = picture->aspect_ratio_information; + xine_event_send(mpeg2dec->stream, &event); } } else if (code == 0xb5) { /* extension_start_code */ if (mpeg2_header_extension (picture, mpeg2dec->chunk_buffer)) { @@ -728,6 +734,7 @@ static void process_userdata(mpeg2dec_t *mpeg2dec, uint8_t *buffer) /* check if user data denotes closed captions */ if (buffer[0] == 'C' && buffer[1] == 'C') { #if 0 + /* FIXME: find an event-less solution */ xine_closed_caption_event_t event; uint8_t *end = find_end(buffer); |