summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-05-22 13:55:14 +0000
committerzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-05-22 13:55:14 +0000
commite5113fdfec02eb93f0c05da4470081dd6fce3318 (patch)
tree6971ce1587d136fbe222dd6a381bbacdf58b1bc4 /libmpdemux
parent6e13c348c3476d1c219eabef5560e8d794a935af (diff)
downloadmpv-e5113fdfec02eb93f0c05da4470081dd6fce3318.tar.bz2
mpv-e5113fdfec02eb93f0c05da4470081dd6fce3318.tar.xz
Set i_bps for ASF video streams according to extended stream properties
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23375 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/asf.h1
-rw-r--r--libmpdemux/asfheader.c7
-rw-r--r--libmpdemux/demux_asf.c1
3 files changed, 7 insertions, 2 deletions
diff --git a/libmpdemux/asf.h b/libmpdemux/asf.h
index 6a8d774aff..7dbc900bca 100644
--- a/libmpdemux/asf.h
+++ b/libmpdemux/asf.h
@@ -241,6 +241,7 @@ struct asf_priv {
int aud_ext_timing_index;
int vid_ext_frame_index;
int know_frame_time;
+ unsigned bps;
};
#endif
diff --git a/libmpdemux/asfheader.c b/libmpdemux/asfheader.c
index c9a90df869..c8346cf1c2 100644
--- a/libmpdemux/asfheader.c
+++ b/libmpdemux/asfheader.c
@@ -198,6 +198,7 @@ static int get_ext_stream_properties(char *buf, int buf_len, int stream_num, str
int pos=0;
uint8_t *buffer = &buf[0];
uint64_t avg_ft;
+ unsigned bitrate;
while ((pos = find_asf_guid(buf, asf_ext_stream_header, pos, buf_len)) >= 0) {
int this_stream_num, stnamect, payct, i, objlen;
@@ -213,7 +214,9 @@ static int get_ext_stream_properties(char *buf, int buf_len, int stream_num, str
// max-object-size(4),
// flags(4) (reliable,seekable,no_cleanpoints?,resend-live-cleanpoints, rest of bits reserved)
- buffer +=8+8+4+4+4+4+4+4+4+4;
+ buffer += 8+8;
+ bitrate = AV_RL32(buffer);
+ buffer += 8*4;
this_stream_num=AV_RL16(buffer);buffer+=2;
if (this_stream_num == stream_num) {
@@ -222,6 +225,7 @@ static int get_ext_stream_properties(char *buf, int buf_len, int stream_num, str
buffer+=2; //skip stream-language-id-index
avg_ft = AV_RL64(buffer); // provided in 100ns units
buffer+=8;
+ asf->bps = bitrate / 8;
// after this are values for stream-name-count and
// payload-extension-system-count
@@ -556,6 +560,7 @@ int read_asf_header(demuxer_t *demuxer,struct asf_priv* asf){
sh_video->aspect = asp_ratio * sh_video->bih->biWidth /
sh_video->bih->biHeight;
}
+ sh_video->i_bps = asf->bps;
if( mp_msg_test(MSGT_DEMUX,MSGL_V) ) print_video_header(sh_video->bih, MSGL_V);
//asf_video_id=streamh.stream_no & 0x7F;
diff --git a/libmpdemux/demux_asf.c b/libmpdemux/demux_asf.c
index 2b7fd86488..c932e1031b 100644
--- a/libmpdemux/demux_asf.c
+++ b/libmpdemux/demux_asf.c
@@ -715,7 +715,6 @@ static demuxer_t* demux_open_asf(demuxer_t* demuxer)
} else {
sh_video=demuxer->video->sh;sh_video->ds=demuxer->video;
sh_video->fps=1000.0f; sh_video->frametime=0.001f;
- //sh_video->i_bps=10*asf->packetsize; // FIXME!
if (asf->asf_is_dvr_ms) {
sh_video->bih->biWidth = 0;