Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
5b326764
Commit
5b326764
authored
Dec 19, 2004
by
Gildas Bazin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* modules/demux/livedotcom.cpp: coding style fixes.
parent
a608a120
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
83 additions
and
80 deletions
+83
-80
modules/demux/livedotcom.cpp
modules/demux/livedotcom.cpp
+83
-80
No files found.
modules/demux/livedotcom.cpp
View file @
5b326764
...
@@ -49,7 +49,6 @@ extern "C" {
...
@@ -49,7 +49,6 @@ extern "C" {
#define RECLAIM_ENV(env) (env)->reclaim()
#define RECLAIM_ENV(env) (env)->reclaim()
#endif
#endif
using
namespace
std
;
using
namespace
std
;
/*****************************************************************************
/*****************************************************************************
...
@@ -64,9 +63,9 @@ static void Close( vlc_object_t * );
...
@@ -64,9 +63,9 @@ static void Close( vlc_object_t * );
"value should be set in millisecond units." )
"value should be set in millisecond units." )
#define KASENNA_TEXT N_( "Kasenna RTSP dialect")
#define KASENNA_TEXT N_( "Kasenna RTSP dialect")
#define KASENNA_LONGTEXT N_( "Kasenna server speak
s an old and unstandard dialect of RTSP.
" \
#define KASENNA_LONGTEXT N_( "Kasenna server speak
an old and unstandard
" \
"
When you set this parameter, VLC will try this dialect for communication. In "
\
"
dialect of RTSP. When you set this parameter, VLC will try this dialect "
\
"this mode you cannot talk to normal RTSP servers." )
"
for communication. In
this mode you cannot talk to normal RTSP servers." )
vlc_module_begin
();
vlc_module_begin
();
set_description
(
_
(
"live.com (RTSP/RTP/SDP) demuxer"
)
);
set_description
(
_
(
"live.com (RTSP/RTP/SDP) demuxer"
)
);
...
@@ -127,6 +126,7 @@ typedef struct
...
@@ -127,6 +126,7 @@ typedef struct
char
waiting
;
char
waiting
;
mtime_t
i_pts
;
mtime_t
i_pts
;
}
live_track_t
;
}
live_track_t
;
struct
demux_sys_t
struct
demux_sys_t
...
@@ -160,10 +160,10 @@ static int Control( demux_t *, int, va_list );
...
@@ -160,10 +160,10 @@ static int Control( demux_t *, int, va_list );
static
int
ParseASF
(
demux_t
*
);
static
int
ParseASF
(
demux_t
*
);
static
void
StreamRead
(
void
*
p_private
,
unsigned
int
i_size
,
unsigned
int
i_truncated_bytes
,
struct
timeval
pts
,
unsigned
int
i_duration
);
static
void
StreamRead
(
void
*
,
unsigned
int
,
unsigned
int
,
static
void
StreamClose
(
void
*
p_private
);
struct
timeval
,
unsigned
int
);
static
void
TaskInterrupt
(
void
*
p_private
);
static
void
StreamClose
(
void
*
);
static
void
TaskInterrupt
(
void
*
);
/*****************************************************************************
/*****************************************************************************
* DemuxOpen:
* DemuxOpen:
...
@@ -192,7 +192,8 @@ static int Open ( vlc_object_t *p_this )
...
@@ -192,7 +192,8 @@ static int Open ( vlc_object_t *p_this )
msg_Err
(
p_demux
,
"cannot peek"
);
msg_Err
(
p_demux
,
"cannot peek"
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
if
(
strncmp
(
(
char
*
)
p_peek
,
"v=0
\r\n
"
,
5
)
&&
strncmp
(
(
char
*
)
p_peek
,
"v=0
\n
"
,
4
)
&&
if
(
strncmp
(
(
char
*
)
p_peek
,
"v=0
\r\n
"
,
5
)
&&
strncmp
(
(
char
*
)
p_peek
,
"v=0
\n
"
,
4
)
&&
(
p_peek
[
0
]
<
'a'
||
p_peek
[
0
]
>
'z'
||
p_peek
[
1
]
!=
'='
)
)
(
p_peek
[
0
]
<
'a'
||
p_peek
[
0
]
>
'z'
||
p_peek
[
1
]
!=
'='
)
)
{
{
msg_Warn
(
p_demux
,
"SDP module discarded"
);
msg_Warn
(
p_demux
,
"SDP module discarded"
);
...
@@ -226,7 +227,7 @@ static int Open ( vlc_object_t *p_this )
...
@@ -226,7 +227,7 @@ static int Open ( vlc_object_t *p_this )
msg_Err
(
p_demux
,
"BasicTaskScheduler::createNew failed"
);
msg_Err
(
p_demux
,
"BasicTaskScheduler::createNew failed"
);
goto
error
;
goto
error
;
}
}
if
(
(
p_sys
->
env
=
BasicUsageEnvironment
::
createNew
(
*
p_sys
->
scheduler
)
)
==
NULL
)
if
(
!
(
p_sys
->
env
=
BasicUsageEnvironment
::
createNew
(
*
p_sys
->
scheduler
)
)
)
{
{
msg_Err
(
p_demux
,
"BasicUsageEnvironment::createNew failed"
);
msg_Err
(
p_demux
,
"BasicUsageEnvironment::createNew failed"
);
goto
error
;
goto
error
;
...
@@ -237,9 +238,11 @@ static int Open ( vlc_object_t *p_this )
...
@@ -237,9 +238,11 @@ static int Open ( vlc_object_t *p_this )
char
*
psz_url
;
char
*
psz_url
;
char
*
psz_options
;
char
*
psz_options
;
if
(
(
p_sys
->
rtsp
=
RTSPClient
::
createNew
(
*
p_sys
->
env
,
1
/*verbose*/
,
"VLC Media Player"
)
)
==
NULL
)
if
(
(
p_sys
->
rtsp
=
RTSPClient
::
createNew
(
*
p_sys
->
env
,
1
/*verbose*/
,
"VLC Media Player"
)
)
==
NULL
)
{
{
msg_Err
(
p_demux
,
"RTSPClient::createNew failed (%s)"
,
p_sys
->
env
->
getResultMsg
()
);
msg_Err
(
p_demux
,
"RTSPClient::createNew failed (%s)"
,
p_sys
->
env
->
getResultMsg
()
);
goto
error
;
goto
error
;
}
}
psz_url
=
(
char
*
)
malloc
(
strlen
(
p_demux
->
psz_path
)
+
8
);
psz_url
=
(
char
*
)
malloc
(
strlen
(
p_demux
->
psz_path
)
+
8
);
...
@@ -253,8 +256,8 @@ static int Open ( vlc_object_t *p_this )
...
@@ -253,8 +256,8 @@ static int Open ( vlc_object_t *p_this )
NULL
,
var_CreateGetBool
(
p_demux
,
"rtsp-kasenna"
)
);
NULL
,
var_CreateGetBool
(
p_demux
,
"rtsp-kasenna"
)
);
if
(
p_sdp
==
NULL
)
if
(
p_sdp
==
NULL
)
{
{
msg_Err
(
p_demux
,
"describeURL failed (%s)"
,
p_sys
->
env
->
getResultMsg
()
);
msg_Err
(
p_demux
,
"describeURL failed (%s)"
,
p_sys
->
env
->
getResultMsg
()
);
free
(
psz_url
);
free
(
psz_url
);
goto
error
;
goto
error
;
}
}
...
@@ -277,7 +280,8 @@ static int Open ( vlc_object_t *p_this )
...
@@ -277,7 +280,8 @@ static int Open ( vlc_object_t *p_this )
p_sdp
=
(
uint8_t
*
)
malloc
(
i_sdp_max
);
p_sdp
=
(
uint8_t
*
)
malloc
(
i_sdp_max
);
for
(
;;
)
for
(
;;
)
{
{
int
i_read
=
stream_Read
(
p_demux
->
s
,
&
p_sdp
[
i_sdp
],
i_sdp_max
-
i_sdp
-
1
);
int
i_read
=
stream_Read
(
p_demux
->
s
,
&
p_sdp
[
i_sdp
],
i_sdp_max
-
i_sdp
-
1
);
if
(
i_read
<
0
)
if
(
i_read
<
0
)
{
{
...
@@ -301,7 +305,7 @@ static int Open ( vlc_object_t *p_this )
...
@@ -301,7 +305,7 @@ static int Open ( vlc_object_t *p_this )
msg_Dbg
(
p_demux
,
"sdp=%s
\n
"
,
p_sys
->
p_sdp
);
msg_Dbg
(
p_demux
,
"sdp=%s
\n
"
,
p_sys
->
p_sdp
);
}
}
if
(
(
p_sys
->
ms
=
MediaSession
::
createNew
(
*
p_sys
->
env
,
p_sys
->
p_sdp
)
)
==
NULL
)
if
(
!
(
p_sys
->
ms
=
MediaSession
::
createNew
(
*
p_sys
->
env
,
p_sys
->
p_sdp
)
)
)
{
{
msg_Err
(
p_demux
,
"MediaSession::createNew failed"
);
msg_Err
(
p_demux
,
"MediaSession::createNew failed"
);
goto
error
;
goto
error
;
...
@@ -331,7 +335,9 @@ static int Open ( vlc_object_t *p_this )
...
@@ -331,7 +335,9 @@ static int Open ( vlc_object_t *p_this )
if
(
!
bInit
)
if
(
!
bInit
)
{
{
msg_Warn
(
p_demux
,
"RTP subsession '%s/%s' failed(%s)"
,
sub
->
mediumName
(),
sub
->
codecName
(),
p_sys
->
env
->
getResultMsg
()
);
msg_Warn
(
p_demux
,
"RTP subsession '%s/%s' failed (%s)"
,
sub
->
mediumName
(),
sub
->
codecName
(),
p_sys
->
env
->
getResultMsg
()
);
}
}
else
else
{
{
...
@@ -342,12 +348,14 @@ static int Open ( vlc_object_t *p_this )
...
@@ -342,12 +348,14 @@ static int Open ( vlc_object_t *p_this )
increaseReceiveBufferTo
(
*
p_sys
->
env
,
fd
,
i_buffer
);
increaseReceiveBufferTo
(
*
p_sys
->
env
,
fd
,
i_buffer
);
}
}
msg_Dbg
(
p_demux
,
"RTP subsession '%s/%s'"
,
sub
->
mediumName
(),
sub
->
codecName
()
);
msg_Dbg
(
p_demux
,
"RTP subsession '%s/%s'"
,
sub
->
mediumName
(),
sub
->
codecName
()
);
/* Issue the SETUP */
/* Issue the SETUP */
if
(
p_sys
->
rtsp
)
if
(
p_sys
->
rtsp
)
{
{
p_sys
->
rtsp
->
setupMediaSubsession
(
*
sub
,
False
,
b_rtsp_tcp
?
True
:
False
);
p_sys
->
rtsp
->
setupMediaSubsession
(
*
sub
,
False
,
b_rtsp_tcp
?
True
:
False
);
}
}
}
}
}
}
...
@@ -389,7 +397,7 @@ static int Open ( vlc_object_t *p_this )
...
@@ -389,7 +397,7 @@ static int Open ( vlc_object_t *p_this )
/* Value taken from mplayer */
/* Value taken from mplayer */
if
(
!
strcmp
(
sub
->
mediumName
(),
"audio"
)
)
if
(
!
strcmp
(
sub
->
mediumName
(),
"audio"
)
)
{
{
es_format_Init
(
&
tk
->
fmt
,
AUDIO_ES
,
VLC_FOURCC
(
'u'
,
'n'
,
'd'
,
'f'
)
);
es_format_Init
(
&
tk
->
fmt
,
AUDIO_ES
,
VLC_FOURCC
(
'u'
,
'n'
,
'd'
,
'f'
)
);
tk
->
fmt
.
audio
.
i_channels
=
sub
->
numChannels
();
tk
->
fmt
.
audio
.
i_channels
=
sub
->
numChannels
();
tk
->
fmt
.
audio
.
i_rate
=
sub
->
rtpSource
()
->
timestampFrequency
();
tk
->
fmt
.
audio
.
i_rate
=
sub
->
rtpSource
()
->
timestampFrequency
();
...
@@ -430,7 +438,8 @@ static int Open ( vlc_object_t *p_this )
...
@@ -430,7 +438,8 @@ static int Open ( vlc_object_t *p_this )
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'4'
,
'a'
);
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'4'
,
'a'
);
if
(
(
p_extra
=
parseStreamMuxConfigStr
(
sub
->
fmtp_config
(),
i_extra
)
)
)
if
(
(
p_extra
=
parseStreamMuxConfigStr
(
sub
->
fmtp_config
(),
i_extra
)
)
)
{
{
tk
->
fmt
.
i_extra
=
i_extra
;
tk
->
fmt
.
i_extra
=
i_extra
;
tk
->
fmt
.
p_extra
=
malloc
(
i_extra
);
tk
->
fmt
.
p_extra
=
malloc
(
i_extra
);
...
@@ -445,7 +454,8 @@ static int Open ( vlc_object_t *p_this )
...
@@ -445,7 +454,8 @@ static int Open ( vlc_object_t *p_this )
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'4'
,
'a'
);
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'4'
,
'a'
);
if
(
(
p_extra
=
parseGeneralConfigStr
(
sub
->
fmtp_config
(),
i_extra
)
)
)
if
(
(
p_extra
=
parseGeneralConfigStr
(
sub
->
fmtp_config
(),
i_extra
)
)
)
{
{
tk
->
fmt
.
i_extra
=
i_extra
;
tk
->
fmt
.
i_extra
=
i_extra
;
tk
->
fmt
.
p_extra
=
malloc
(
i_extra
);
tk
->
fmt
.
p_extra
=
malloc
(
i_extra
);
...
@@ -457,12 +467,13 @@ static int Open ( vlc_object_t *p_this )
...
@@ -457,12 +467,13 @@ static int Open ( vlc_object_t *p_this )
{
{
tk
->
b_asf
=
VLC_TRUE
;
tk
->
b_asf
=
VLC_TRUE
;
if
(
p_sys
->
p_out_asf
==
NULL
)
if
(
p_sys
->
p_out_asf
==
NULL
)
p_sys
->
p_out_asf
=
stream_DemuxNew
(
p_demux
,
"asf"
,
p_demux
->
out
);;
p_sys
->
p_out_asf
=
stream_DemuxNew
(
p_demux
,
"asf"
,
p_demux
->
out
);
}
}
}
}
else
if
(
!
strcmp
(
sub
->
mediumName
(),
"video"
)
)
else
if
(
!
strcmp
(
sub
->
mediumName
(),
"video"
)
)
{
{
es_format_Init
(
&
tk
->
fmt
,
VIDEO_ES
,
VLC_FOURCC
(
'u'
,
'n'
,
'd'
,
'f'
)
);
es_format_Init
(
&
tk
->
fmt
,
VIDEO_ES
,
VLC_FOURCC
(
'u'
,
'n'
,
'd'
,
'f'
)
);
if
(
!
strcmp
(
sub
->
codecName
(),
"MPV"
)
)
if
(
!
strcmp
(
sub
->
codecName
(),
"MPV"
)
)
{
{
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'g'
,
'v'
);
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'g'
,
'v'
);
...
@@ -488,7 +499,8 @@ static int Open ( vlc_object_t *p_this )
...
@@ -488,7 +499,8 @@ static int Open ( vlc_object_t *p_this )
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'4'
,
'v'
);
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
'm'
,
'p'
,
'4'
,
'v'
);
if
(
(
p_extra
=
parseGeneralConfigStr
(
sub
->
fmtp_config
(),
i_extra
)
)
)
if
(
(
p_extra
=
parseGeneralConfigStr
(
sub
->
fmtp_config
(),
i_extra
)
)
)
{
{
tk
->
fmt
.
i_extra
=
i_extra
;
tk
->
fmt
.
i_extra
=
i_extra
;
tk
->
fmt
.
p_extra
=
malloc
(
i_extra
);
tk
->
fmt
.
p_extra
=
malloc
(
i_extra
);
...
@@ -496,8 +508,10 @@ static int Open ( vlc_object_t *p_this )
...
@@ -496,8 +508,10 @@ static int Open ( vlc_object_t *p_this )
delete
[]
p_extra
;
delete
[]
p_extra
;
}
}
}
}
else
if
(
!
strcmp
(
sub
->
codecName
(),
"X-QT"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-QUICKTIME"
)
||
else
if
(
!
strcmp
(
sub
->
codecName
(),
"X-QT"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-QDM"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-SV3V-ES"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-QUICKTIME"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-QDM"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-SV3V-ES"
)
||
!
strcmp
(
sub
->
codecName
(),
"X-SORENSONVIDEO"
)
)
!
strcmp
(
sub
->
codecName
(),
"X-SORENSONVIDEO"
)
)
{
{
tk
->
b_quicktime
=
VLC_TRUE
;
tk
->
b_quicktime
=
VLC_TRUE
;
...
@@ -507,16 +521,19 @@ static int Open ( vlc_object_t *p_this )
...
@@ -507,16 +521,19 @@ static int Open ( vlc_object_t *p_this )
tk
->
b_muxed
=
VLC_TRUE
;
tk
->
b_muxed
=
VLC_TRUE
;
tk
->
p_out_muxed
=
stream_DemuxNew
(
p_demux
,
"ts"
,
p_demux
->
out
);
tk
->
p_out_muxed
=
stream_DemuxNew
(
p_demux
,
"ts"
,
p_demux
->
out
);
}
}
else
if
(
!
strcmp
(
sub
->
codecName
(),
"MP2P"
)
||
!
strcmp
(
sub
->
codecName
(),
"MP1S"
)
)
else
if
(
!
strcmp
(
sub
->
codecName
(),
"MP2P"
)
||
!
strcmp
(
sub
->
codecName
(),
"MP1S"
)
)
{
{
tk
->
b_muxed
=
VLC_TRUE
;
tk
->
b_muxed
=
VLC_TRUE
;
tk
->
p_out_muxed
=
stream_DemuxNew
(
p_demux
,
"ps"
,
p_demux
->
out
);
tk
->
p_out_muxed
=
stream_DemuxNew
(
p_demux
,
"ps"
,
p_demux
->
out
);
}
}
else
if
(
!
strcmp
(
sub
->
codecName
(),
"X-ASF-PF"
)
)
else
if
(
!
strcmp
(
sub
->
codecName
(),
"X-ASF-PF"
)
)
{
{
tk
->
b_asf
=
VLC_TRUE
;
tk
->
b_asf
=
VLC_TRUE
;
if
(
p_sys
->
p_out_asf
==
NULL
)
if
(
p_sys
->
p_out_asf
==
NULL
)
p_sys
->
p_out_asf
=
stream_DemuxNew
(
p_demux
,
"asf"
,
p_demux
->
out
);;
p_sys
->
p_out_asf
=
stream_DemuxNew
(
p_demux
,
"asf"
,
p_demux
->
out
);;
}
}
}
}
...
@@ -602,8 +619,6 @@ error:
...
@@ -602,8 +619,6 @@ error:
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
/*****************************************************************************
/*****************************************************************************
* DemuxClose:
* DemuxClose:
*****************************************************************************/
*****************************************************************************/
...
@@ -617,45 +632,26 @@ static void Close( vlc_object_t *p_this )
...
@@ -617,45 +632,26 @@ static void Close( vlc_object_t *p_this )
{
{
live_track_t
*
tk
=
p_sys
->
track
[
i
];
live_track_t
*
tk
=
p_sys
->
track
[
i
];
if
(
tk
->
b_muxed
)
if
(
tk
->
b_muxed
)
stream_DemuxDelete
(
tk
->
p_out_muxed
);
{
stream_DemuxDelete
(
tk
->
p_out_muxed
);
}
free
(
tk
->
p_buffer
);
free
(
tk
->
p_buffer
);
free
(
tk
);
free
(
tk
);
}
}
if
(
p_sys
->
i_track
)
{
if
(
p_sys
->
i_track
)
free
(
p_sys
->
track
);
free
(
p_sys
->
track
);
if
(
p_sys
->
p_out_asf
)
stream_DemuxDelete
(
p_sys
->
p_out_asf
);
}
if
(
p_sys
->
p_out_asf
)
{
stream_DemuxDelete
(
p_sys
->
p_out_asf
);
}
if
(
p_sys
->
rtsp
&&
p_sys
->
ms
)
if
(
p_sys
->
rtsp
&&
p_sys
->
ms
)
{
{
/* TEARDOWN */
/* TEARDOWN */
p_sys
->
rtsp
->
teardownMediaSession
(
*
p_sys
->
ms
);
p_sys
->
rtsp
->
teardownMediaSession
(
*
p_sys
->
ms
);
}
}
Medium
::
close
(
p_sys
->
ms
);
Medium
::
close
(
p_sys
->
ms
);
if
(
p_sys
->
rtsp
)
{
Medium
::
close
(
p_sys
->
rtsp
);
}
if
(
p_sys
->
env
)
if
(
p_sys
->
rtsp
)
Medium
::
close
(
p_sys
->
rtsp
);
{
if
(
p_sys
->
env
)
RECLAIM_ENV
(
p_sys
->
env
);
RECLAIM_ENV
(
p_sys
->
env
);
if
(
p_sys
->
scheduler
)
delete
p_sys
->
scheduler
;
}
if
(
p_sys
->
p_sdp
)
free
(
p_sys
->
p_sdp
);
if
(
p_sys
->
scheduler
)
{
delete
p_sys
->
scheduler
;
}
if
(
p_sys
->
p_sdp
)
{
free
(
p_sys
->
p_sdp
);
}
free
(
p_sys
);
free
(
p_sys
);
}
}
...
@@ -710,8 +706,7 @@ static int Demux( demux_t *p_demux )
...
@@ -710,8 +706,7 @@ static int Demux( demux_t *p_demux )
{
{
tk
->
waiting
=
1
;
tk
->
waiting
=
1
;
tk
->
readSource
->
getNextFrame
(
tk
->
p_buffer
,
tk
->
i_buffer
,
tk
->
readSource
->
getNextFrame
(
tk
->
p_buffer
,
tk
->
i_buffer
,
StreamRead
,
tk
,
StreamRead
,
tk
,
StreamClose
,
tk
);
StreamClose
,
tk
);
}
}
}
}
/* Create a task that will be called if we wait more than 300ms */
/* Create a task that will be called if we wait more than 300ms */
...
@@ -728,7 +723,8 @@ static int Demux( demux_t *p_demux )
...
@@ -728,7 +723,8 @@ static int Demux( demux_t *p_demux )
{
{
live_track_t
*
tk
=
p_sys
->
track
[
i
];
live_track_t
*
tk
=
p_sys
->
track
[
i
];
if
(
!
tk
->
b_muxed
&&
!
tk
->
b_rtcp_sync
&&
tk
->
rtpSource
->
hasBeenSynchronizedUsingRTCP
()
)
if
(
!
tk
->
b_muxed
&&
!
tk
->
b_rtcp_sync
&&
tk
->
rtpSource
->
hasBeenSynchronizedUsingRTCP
()
)
{
{
msg_Dbg
(
p_demux
,
"tk->rtpSource->hasBeenSynchronizedUsingRTCP()"
);
msg_Dbg
(
p_demux
,
"tk->rtpSource->hasBeenSynchronizedUsingRTCP()"
);
...
@@ -755,7 +751,6 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -755,7 +751,6 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
int64_t
*
pi64
;
int64_t
*
pi64
;
double
*
pf
,
f
;
double
*
pf
,
f
;
vlc_bool_t
*
pb
,
b_bool
;
vlc_bool_t
*
pb
,
b_bool
;
int
i
;
switch
(
i_query
)
switch
(
i_query
)
{
{
...
@@ -773,8 +768,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -773,8 +768,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
pf
=
(
double
*
)
va_arg
(
args
,
double
*
);
pf
=
(
double
*
)
va_arg
(
args
,
double
*
);
if
(
p_sys
->
i_length
>
0
)
if
(
p_sys
->
i_length
>
0
)
{
{
*
pf
=
(
double
)(
p_sys
->
i_pcr
-
p_sys
->
i_pcr_start
+
p_sys
->
i_start
)
/
*
pf
=
(
double
)(
p_sys
->
i_pcr
-
p_sys
->
i_pcr_start
+
(
double
)(
p_sys
->
i_length
);
p_sys
->
i_start
)
/
(
double
)(
p_sys
->
i_length
);
}
}
else
else
{
{
...
@@ -791,7 +786,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -791,7 +786,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
if
(
p_sys
->
rtsp
&&
p_sys
->
i_length
>
0
)
if
(
p_sys
->
rtsp
&&
p_sys
->
i_length
>
0
)
{
{
MediaSubsessionIterator
*
iter
=
new
MediaSubsessionIterator
(
*
p_sys
->
ms
);
MediaSubsessionIterator
*
iter
=
new
MediaSubsessionIterator
(
*
p_sys
->
ms
);
MediaSubsession
*
sub
;
MediaSubsession
*
sub
;
int
i
;
int
i
;
...
@@ -808,6 +804,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -808,6 +804,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
{
{
p_sys
->
track
[
i
]
->
i_pts
=
0
;
p_sys
->
track
[
i
]
->
i_pts
=
0
;
}
}
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
...
@@ -817,7 +814,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -817,7 +814,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
case
DEMUX_CAN_PAUSE
:
case
DEMUX_CAN_PAUSE
:
pb
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
pb
=
(
vlc_bool_t
*
)
va_arg
(
args
,
vlc_bool_t
*
);
if
(
p_sys
->
rtsp
&&
p_sys
->
i_length
)
if
(
p_sys
->
rtsp
&&
p_sys
->
i_length
)
*
pb
=
VLC_TRUE
;
/* Not always true, but will be handled in SET_PAUSE_STATE */
/* Not always true, but will be handled in SET_PAUSE_STATE */
*
pb
=
VLC_TRUE
;
else
else
*
pb
=
VLC_FALSE
;
*
pb
=
VLC_FALSE
;
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
...
@@ -832,7 +830,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -832,7 +830,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
MediaSubsessionIterator
*
iter
;
MediaSubsessionIterator
*
iter
;
MediaSubsession
*
sub
;
MediaSubsession
*
sub
;
d_npt
=
(
(
double
)(
p_sys
->
i_pcr
-
p_sys
->
i_pcr_start
+
p_sys
->
i_start
)
)
/
1000000.00
;
d_npt
=
(
(
double
)(
p_sys
->
i_pcr
-
p_sys
->
i_pcr_start
+
p_sys
->
i_start
)
)
/
1000000.00
;
b_bool
=
(
vlc_bool_t
)
va_arg
(
args
,
vlc_bool_t
);
b_bool
=
(
vlc_bool_t
)
va_arg
(
args
,
vlc_bool_t
);
if
(
p_sys
->
rtsp
==
NULL
)
if
(
p_sys
->
rtsp
==
NULL
)
...
@@ -842,7 +841,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -842,7 +841,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
while
(
(
sub
=
iter
->
next
()
)
!=
NULL
)
while
(
(
sub
=
iter
->
next
()
)
!=
NULL
)
{
{
if
(
(
b_bool
&&
!
p_sys
->
rtsp
->
pauseMediaSubsession
(
*
sub
)
)
||
if
(
(
b_bool
&&
!
p_sys
->
rtsp
->
pauseMediaSubsession
(
*
sub
)
)
||
(
!
b_bool
&&
!
p_sys
->
rtsp
->
playMediaSubsession
(
*
sub
,
d_npt
>
0
?
d_npt
:
-
1
)
)
)
(
!
b_bool
&&
!
p_sys
->
rtsp
->
playMediaSubsession
(
*
sub
,
d_npt
>
0
?
d_npt
:
-
1
)
)
)
{
{
delete
iter
;
delete
iter
;
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
...
@@ -867,7 +867,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -867,7 +867,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
case
DEMUX_GET_PTS_DELAY
:
case
DEMUX_GET_PTS_DELAY
:
pi64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
pi64
=
(
int64_t
*
)
va_arg
(
args
,
int64_t
*
);
*
pi64
=
(
int64_t
)
var_GetInteger
(
p_demux
,
"rtsp-caching"
)
*
I64C
(
1000
)
;
*
pi64
=
(
int64_t
)
var_GetInteger
(
p_demux
,
"rtsp-caching"
)
*
1000
;
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
default:
default:
...
@@ -878,21 +878,25 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
...
@@ -878,21 +878,25 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
/*****************************************************************************
/*****************************************************************************
*
*
*****************************************************************************/
*****************************************************************************/
static
void
StreamRead
(
void
*
p_private
,
unsigned
int
i_size
,
unsigned
int
i_truncated_bytes
,
struct
timeval
pts
,
unsigned
int
duration
)
static
void
StreamRead
(
void
*
p_private
,
unsigned
int
i_size
,
unsigned
int
i_truncated_bytes
,
struct
timeval
pts
,
unsigned
int
duration
)
{
{
live_track_t
*
tk
=
(
live_track_t
*
)
p_private
;
live_track_t
*
tk
=
(
live_track_t
*
)
p_private
;
demux_t
*
p_demux
=
tk
->
p_demux
;
demux_t
*
p_demux
=
tk
->
p_demux
;
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
block_t
*
p_block
;
block_t
*
p_block
;
mtime_t
i_pts
=
(
uint64_t
)
pts
.
tv_sec
*
UI64C
(
1000000
)
+
(
uint64_t
)
pts
.
tv_usec
;
mtime_t
i_pts
=
(
uint64_t
)
pts
.
tv_sec
*
UI64C
(
1000000
)
+
(
uint64_t
)
pts
.
tv_usec
;
/* XXX Beurk beurk beurk Avoid having negative value XXX */
/* XXX Beurk beurk beurk Avoid having negative value XXX */
i_pts
&=
UI64C
(
0x00ffffffffffffff
);
i_pts
&=
UI64C
(
0x00ffffffffffffff
);
if
(
tk
->
b_quicktime
&&
tk
->
p_es
==
NULL
)
if
(
tk
->
b_quicktime
&&
tk
->
p_es
==
NULL
)
{
{
QuickTimeGenericRTPSource
*
qtRTPSource
=
(
QuickTimeGenericRTPSource
*
)
tk
->
rtpSource
;
QuickTimeGenericRTPSource
*
qtRTPSource
=
(
QuickTimeGenericRTPSource
*
)
tk
->
rtpSource
;
QuickTimeGenericRTPSource
::
QTState
&
qtState
=
qtRTPSource
->
qtState
;
QuickTimeGenericRTPSource
::
QTState
&
qtState
=
qtRTPSource
->
qtState
;
uint8_t
*
sdAtom
=
(
uint8_t
*
)
&
qtState
.
sdAtom
[
4
];
uint8_t
*
sdAtom
=
(
uint8_t
*
)
&
qtState
.
sdAtom
[
4
];
...
@@ -903,7 +907,7 @@ static void StreamRead( void *p_private, unsigned int i_size, unsigned int i_tru
...
@@ -903,7 +907,7 @@ static void StreamRead( void *p_private, unsigned int i_size, unsigned int i_tru
tk
->
waiting
=
0
;
tk
->
waiting
=
0
;
return
;
return
;
}
}
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
sdAtom
[
0
],
sdAtom
[
1
],
sdAtom
[
2
],
sdAtom
[
3
]
);
tk
->
fmt
.
i_codec
=
VLC_FOURCC
(
sdAtom
[
0
],
sdAtom
[
1
],
sdAtom
[
2
],
sdAtom
[
3
]
);
tk
->
fmt
.
video
.
i_width
=
(
sdAtom
[
28
]
<<
8
)
|
sdAtom
[
29
];
tk
->
fmt
.
video
.
i_width
=
(
sdAtom
[
28
]
<<
8
)
|
sdAtom
[
29
];
tk
->
fmt
.
video
.
i_height
=
(
sdAtom
[
30
]
<<
8
)
|
sdAtom
[
31
];
tk
->
fmt
.
video
.
i_height
=
(
sdAtom
[
30
]
<<
8
)
|
sdAtom
[
31
];
...
@@ -958,7 +962,7 @@ static void StreamRead( void *p_private, unsigned int i_size, unsigned int i_tru
...
@@ -958,7 +962,7 @@ static void StreamRead( void *p_private, unsigned int i_size, unsigned int i_tru
}
}
else
if
(
tk
->
b_asf
)
else
if
(
tk
->
b_asf
)
{
{
int
i_copy
=
__MIN
(
p_sys
->
asfh
.
i_min_data_packet_size
,
i_size
);
int
i_copy
=
__MIN
(
p_sys
->
asfh
.
i_min_data_packet_size
,
(
int
)
i_size
);
p_block
=
block_New
(
p_demux
,
p_sys
->
asfh
.
i_min_data_packet_size
);
p_block
=
block_New
(
p_demux
,
p_sys
->
asfh
.
i_min_data_packet_size
);
memcpy
(
p_block
->
p_buffer
,
tk
->
p_buffer
,
i_copy
);
memcpy
(
p_block
->
p_buffer
,
tk
->
p_buffer
,
i_copy
);
...
@@ -1145,4 +1149,3 @@ static int b64_decode( char *dest, char *src )
...
@@ -1145,4 +1149,3 @@ static int b64_decode( char *dest, char *src )
return
dest
-
dest_start
;
return
dest
-
dest_start
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment