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
d551561d
Commit
d551561d
authored
Nov 02, 2008
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved a bit es_out_t generalisation.
parent
a7e6be66
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
72 additions
and
63 deletions
+72
-63
include/vlc_es_out.h
include/vlc_es_out.h
+13
-3
src/input/es_out.c
src/input/es_out.c
+57
-57
src/input/es_out.h
src/input/es_out.h
+0
-1
src/input/input.c
src/input/input.c
+2
-2
No files found.
include/vlc_es_out.h
View file @
d551561d
...
...
@@ -71,7 +71,7 @@ enum es_out_query_e
/* PCR handling, DTS/PTS will be automatically computed using thoses PCR
* XXX: SET_PCR(_GROUP) are in charge of the pace control. They will wait
* to slow down the demuxer so that it reads at the right speed.
* XXX: if you want PREROLL just call ES_OUT_SET_NEXT_DISPLAY_TIME and send
$
* XXX: if you want PREROLL just call ES_OUT_SET_NEXT_DISPLAY_TIME and send
* as you would normally do.
*/
ES_OUT_SET_PCR
,
/* arg1=int64_t i_pcr(microsecond!) (using default group 0)*/
...
...
@@ -92,7 +92,10 @@ enum es_out_query_e
/* Set epg for group (dynamic) */
ES_OUT_SET_GROUP_EPG
,
/* arg1=int i_group arg2=vlc_epg_t */
/* */
ES_OUT_DEL_GROUP
/* arg1=int i_group */
ES_OUT_DEL_GROUP
,
/* arg1=int i_group */
/* First value usable for private control */
ES_OUT_PRIVATE_START
=
0x10000
,
};
struct
es_out_t
...
...
@@ -101,6 +104,8 @@ struct es_out_t
int
(
*
pf_send
)
(
es_out_t
*
,
es_out_id_t
*
,
block_t
*
);
void
(
*
pf_del
)
(
es_out_t
*
,
es_out_id_t
*
);
int
(
*
pf_control
)(
es_out_t
*
,
int
i_query
,
va_list
);
void
(
*
pf_destroy
)(
es_out_t
*
);
bool
b_sout
;
es_out_sys_t
*
p_sys
;
...
...
@@ -139,6 +144,11 @@ static inline int es_out_Control( es_out_t *out, int i_query, ... )
return
i_result
;
}
static
inline
void
es_out_Delete
(
es_out_t
*
p_out
)
{
p_out
->
pf_destroy
(
p_out
);
}
/**
* @}
*/
...
...
src/input/es_out.c
View file @
d551561d
...
...
@@ -160,9 +160,10 @@ struct es_out_sys_t
static
es_out_id_t
*
EsOutAdd
(
es_out_t
*
,
es_format_t
*
);
static
int
EsOutSend
(
es_out_t
*
,
es_out_id_t
*
,
block_t
*
);
static
void
EsOutDel
(
es_out_t
*
,
es_out_id_t
*
);
static
void
EsOutSelect
(
es_out_t
*
out
,
es_out_id_t
*
es
,
bool
b_force
);
static
int
EsOutControl
(
es_out_t
*
,
int
i_query
,
va_list
);
static
void
EsOutDelete
(
es_out_t
*
out
);
static
void
EsOutSelect
(
es_out_t
*
out
,
es_out_id_t
*
es
,
bool
b_force
);
static
void
EsOutAddInfo
(
es_out_t
*
,
es_out_id_t
*
es
);
static
bool
EsIsSelected
(
es_out_id_t
*
es
);
...
...
@@ -221,6 +222,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate )
out
->
pf_send
=
EsOutSend
;
out
->
pf_del
=
EsOutDel
;
out
->
pf_control
=
EsOutControl
;
out
->
pf_destroy
=
EsOutDelete
;
out
->
p_sys
=
p_sys
;
out
->
b_sout
=
p_input
->
p
->
p_sout
!=
NULL
;
...
...
@@ -308,62 +310,6 @@ es_out_t *input_EsOutNew( input_thread_t *p_input, int i_rate )
return
out
;
}
/*****************************************************************************
* input_EsOutDelete:
*****************************************************************************/
void
input_EsOutDelete
(
es_out_t
*
out
)
{
es_out_sys_t
*
p_sys
=
out
->
p_sys
;
int
i
;
if
(
p_sys
->
p_sout_record
)
input_EsOutSetRecord
(
out
,
false
);
for
(
i
=
0
;
i
<
p_sys
->
i_es
;
i
++
)
{
if
(
p_sys
->
es
[
i
]
->
p_dec
)
input_DecoderDelete
(
p_sys
->
es
[
i
]
->
p_dec
);
free
(
p_sys
->
es
[
i
]
->
psz_language
);
free
(
p_sys
->
es
[
i
]
->
psz_language_code
);
es_format_Clean
(
&
p_sys
->
es
[
i
]
->
fmt
);
free
(
p_sys
->
es
[
i
]
);
}
if
(
p_sys
->
ppsz_audio_language
)
{
for
(
i
=
0
;
p_sys
->
ppsz_audio_language
[
i
];
i
++
)
free
(
p_sys
->
ppsz_audio_language
[
i
]
);
free
(
p_sys
->
ppsz_audio_language
);
}
if
(
p_sys
->
ppsz_sub_language
)
{
for
(
i
=
0
;
p_sys
->
ppsz_sub_language
[
i
];
i
++
)
free
(
p_sys
->
ppsz_sub_language
[
i
]
);
free
(
p_sys
->
ppsz_sub_language
);
}
free
(
p_sys
->
es
);
/* FIXME duplicate work EsOutProgramDel (but we cannot use it) add a EsOutProgramClean ? */
for
(
i
=
0
;
i
<
p_sys
->
i_pgrm
;
i
++
)
{
es_out_pgrm_t
*
p_pgrm
=
p_sys
->
pgrm
[
i
];
input_clock_Delete
(
p_pgrm
->
p_clock
);
free
(
p_pgrm
->
psz_now_playing
);
free
(
p_pgrm
->
psz_publisher
);
free
(
p_pgrm
->
psz_name
);
if
(
p_pgrm
->
p_epg
)
vlc_epg_Delete
(
p_pgrm
->
p_epg
);
free
(
p_pgrm
);
}
TAB_CLEAN
(
p_sys
->
i_pgrm
,
p_sys
->
pgrm
);
vlc_mutex_destroy
(
&
p_sys
->
lock
);
free
(
p_sys
);
free
(
out
);
}
es_out_id_t
*
input_EsOutGetFromID
(
es_out_t
*
out
,
int
i_id
)
{
int
i
;
...
...
@@ -671,6 +617,60 @@ void input_EsOutUnlock( es_out_t *out )
/*****************************************************************************
*
*****************************************************************************/
static
void
EsOutDelete
(
es_out_t
*
out
)
{
es_out_sys_t
*
p_sys
=
out
->
p_sys
;
int
i
;
if
(
p_sys
->
p_sout_record
)
input_EsOutSetRecord
(
out
,
false
);
for
(
i
=
0
;
i
<
p_sys
->
i_es
;
i
++
)
{
if
(
p_sys
->
es
[
i
]
->
p_dec
)
input_DecoderDelete
(
p_sys
->
es
[
i
]
->
p_dec
);
free
(
p_sys
->
es
[
i
]
->
psz_language
);
free
(
p_sys
->
es
[
i
]
->
psz_language_code
);
es_format_Clean
(
&
p_sys
->
es
[
i
]
->
fmt
);
free
(
p_sys
->
es
[
i
]
);
}
if
(
p_sys
->
ppsz_audio_language
)
{
for
(
i
=
0
;
p_sys
->
ppsz_audio_language
[
i
];
i
++
)
free
(
p_sys
->
ppsz_audio_language
[
i
]
);
free
(
p_sys
->
ppsz_audio_language
);
}
if
(
p_sys
->
ppsz_sub_language
)
{
for
(
i
=
0
;
p_sys
->
ppsz_sub_language
[
i
];
i
++
)
free
(
p_sys
->
ppsz_sub_language
[
i
]
);
free
(
p_sys
->
ppsz_sub_language
);
}
free
(
p_sys
->
es
);
/* FIXME duplicate work EsOutProgramDel (but we cannot use it) add a EsOutProgramClean ? */
for
(
i
=
0
;
i
<
p_sys
->
i_pgrm
;
i
++
)
{
es_out_pgrm_t
*
p_pgrm
=
p_sys
->
pgrm
[
i
];
input_clock_Delete
(
p_pgrm
->
p_clock
);
free
(
p_pgrm
->
psz_now_playing
);
free
(
p_pgrm
->
psz_publisher
);
free
(
p_pgrm
->
psz_name
);
if
(
p_pgrm
->
p_epg
)
vlc_epg_Delete
(
p_pgrm
->
p_epg
);
free
(
p_pgrm
);
}
TAB_CLEAN
(
p_sys
->
i_pgrm
,
p_sys
->
pgrm
);
vlc_mutex_destroy
(
&
p_sys
->
lock
);
free
(
p_sys
);
free
(
out
);
}
static
void
EsOutDecodersStopBuffering
(
es_out_t
*
out
,
bool
b_forced
)
{
es_out_sys_t
*
p_sys
=
out
->
p_sys
;
...
...
src/input/es_out.h
View file @
d551561d
...
...
@@ -32,7 +32,6 @@
#include <vlc_common.h>
es_out_t
*
input_EsOutNew
(
input_thread_t
*
,
int
i_rate
);
void
input_EsOutDelete
(
es_out_t
*
);
es_out_id_t
*
input_EsOutGetFromID
(
es_out_t
*
,
int
i_id
);
mtime_t
input_EsOutGetWakeup
(
es_out_t
*
);
void
input_EsOutSetDelay
(
es_out_t
*
,
int
i_cat
,
int64_t
);
...
...
src/input/input.c
View file @
d551561d
...
...
@@ -1275,7 +1275,7 @@ error:
input_ChangeState
(
p_input
,
ERROR_S
);
if
(
p_input
->
p
->
p_es_out
)
input_EsOut
Delete
(
p_input
->
p
->
p_es_out
);
es_out_
Delete
(
p_input
->
p
->
p_es_out
);
#ifdef ENABLE_SOUT
if
(
p_input
->
p
->
p_sout
)
{
...
...
@@ -1363,7 +1363,7 @@ static void End( input_thread_t * p_input )
/* Unload all modules */
if
(
p_input
->
p
->
p_es_out
)
input_EsOut
Delete
(
p_input
->
p
->
p_es_out
);
es_out_
Delete
(
p_input
->
p
->
p_es_out
);
if
(
!
p_input
->
b_preparsing
)
{
...
...
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