summaryrefslogtreecommitdiff
path: root/src/libmpeg2/decode.c
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2004-09-22 20:29:13 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2004-09-22 20:29:13 +0000
commitfa11460bbd06540d43ffe53d047f25639a0a6b83 (patch)
tree15c95a55bb4fbb9ea3a586f2bc171a33f787033a /src/libmpeg2/decode.c
parente115a32802f4284912a2833c04c06d65270cfdef (diff)
downloadxine-lib-fa11460bbd06540d43ffe53d047f25639a0a6b83.tar.gz
xine-lib-fa11460bbd06540d43ffe53d047f25639a0a6b83.tar.bz2
- added cropping capability (thanks James Stembridge)
- some vo drivers support cropping natively. (only xv and xvmc have been tested) - add software crop fallback to video_out.c - skip yuv2rgb processing at xshm for not yet cropped frames (these frames are never shown) - libmpeg2 and ffmpeg now may use crop support - bump vo api. (changes to xvmc/xxmc will follow) CVS patchset: 6991 CVS date: 2004/09/22 20:29:13
Diffstat (limited to 'src/libmpeg2/decode.c')
-rw-r--r--src/libmpeg2/decode.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c
index 40f182599..bb5076489 100644
--- a/src/libmpeg2/decode.c
+++ b/src/libmpeg2/decode.c
@@ -203,8 +203,8 @@ static void remember_metainfo (mpeg2dec_t *mpeg2dec) {
picture_t * picture = mpeg2dec->picture;
- _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_WIDTH, picture->frame_width);
- _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_HEIGHT, picture->frame_height);
+ _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_WIDTH, picture->display_width);
+ _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_HEIGHT, picture->display_height);
_x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_RATIO,
((double)10000 * get_aspect_ratio(mpeg2dec)));
@@ -421,9 +421,9 @@ static inline int parse_chunk (mpeg2dec_t * mpeg2dec, int code,
xine_event_send(mpeg2dec->stream, &event);
_x_stream_info_set(mpeg2dec->stream,XINE_STREAM_INFO_VIDEO_WIDTH,
- picture->coded_picture_width);
+ picture->display_width);
_x_stream_info_set(mpeg2dec->stream,XINE_STREAM_INFO_VIDEO_HEIGHT,
- picture->coded_picture_height);
+ picture->display_height);
if (picture->forward_reference_frame &&
picture->forward_reference_frame != picture->current_frame &&
@@ -521,6 +521,8 @@ static inline int parse_chunk (mpeg2dec_t * mpeg2dec, int code,
picture->current_frame->top_field_first = picture->top_field_first;
picture->current_frame->repeat_first_field = picture->repeat_first_field;
picture->current_frame->progressive_frame = picture->progressive_frame;
+ picture->current_frame->crop_right = picture->coded_picture_width - picture->display_width;
+ picture->current_frame->crop_bottom = picture->coded_picture_height - picture->display_height;
switch( picture->picture_coding_type ) {
case I_TYPE:
@@ -841,9 +843,9 @@ void mpeg2_find_sequence_header (mpeg2dec_t * mpeg2dec,
xine_event_send(mpeg2dec->stream, &event);
_x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_WIDTH,
- picture->coded_picture_width);
+ picture->display_width);
_x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_HEIGHT,
- picture->coded_picture_height);
+ picture->display_height);
}
} else if (code == 0xb5) { /* extension_start_code */
if (mpeg2_header_extension (picture, mpeg2dec->chunk_buffer)) {
@@ -890,9 +892,9 @@ static void process_userdata(mpeg2dec_t *mpeg2dec, uint8_t *buffer)
xine_event_send(mpeg2dec->stream, &event);
_x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_WIDTH,
- mpeg2dec->picture->coded_picture_width);
+ mpeg2dec->picture->display_width);
_x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_HEIGHT,
- mpeg2dec->picture->coded_picture_height);
+ mpeg2dec->picture->display_height);
}
if (mpeg2dec->cc_dec) {