[vlc-devel] [PATCH] dcp: Command-line option to choose a CPL
Rémi Denis-Courmont
remi at remlab.net
Thu Feb 6 20:56:18 CET 2014
Le jeudi 6 février 2014, 20:46:45 Valentin Vetter a écrit :
> We can now use `./vlc --cpl N ...` to choose a CPL number
> ---
> modules/access/dcp/dcp.cpp | 7 +++++++
> modules/access/dcp/dcpparser.cpp | 10 +++++++++-
> modules/access/dcp/dcpparser.h | 7 +++++--
> 3 files changed, 21 insertions(+), 3 deletions(-)
>
> diff --git a/modules/access/dcp/dcp.cpp b/modules/access/dcp/dcp.cpp
> index 36516eb..6e7eee1 100644
> --- a/modules/access/dcp/dcp.cpp
> +++ b/modules/access/dcp/dcp.cpp
> @@ -62,6 +62,10 @@ static int Open( vlc_object_t * );
> static void Close( vlc_object_t * );
>
> /* Module descriptor */
> +#define DCP_CPL_TEXT N_("CPL number.")
No dot here.
> +#define DCP_CPL_LONGTEXT N_("Plays the media associated to"\
> + "the CPL number.")
Maybe expand the accronym here.
> +
> vlc_module_begin()
> set_shortname( N_( "DCP" ) )
> add_shortcut( "dcp" )
> @@ -69,6 +73,7 @@ vlc_module_begin()
> set_capability( "access_demux", 0 )
> set_category( CAT_INPUT )
> set_subcategory( SUBCAT_INPUT_ACCESS )
> + add_integer( "cpl_num", 0, DCP_CPL_TEXT, DCP_CPL_LONGTEXT, false )
You could add change_integer_range().
> set_callbacks( Open, Close )
> vlc_module_end()
>
> @@ -279,6 +284,8 @@ static int Open( vlc_object_t *obj )
> }
> p_sys->p_dcp = p_dcp;
>
> + p_sys->p_dcp->i_cpl_num = var_InheritInteger( p_demux, "cpl_num" );
OK, but do you really need to store this value?
> +
>
> /* handle the DCP directory, saving the paths for audio and video file,
> returning error if unsuccessful */ if( ( retval = dcpInit( p_demux ) ) )
> diff --git a/modules/access/dcp/dcpparser.cpp
> b/modules/access/dcp/dcpparser.cpp index 4dc1cda..cfa3bb6 100644
> --- a/modules/access/dcp/dcpparser.cpp
> +++ b/modules/access/dcp/dcpparser.cpp
> @@ -316,8 +316,8 @@ int AssetMap::Parse ( )
> /* TODO: Only one CPL managed.
> * Future work needed for managing severals
> */
> + cpl = pkl->getCPL(p_dcp->i_cpl_num);
>
> - cpl = pkl->getCPL(0);
> if( cpl == NULL ) {
> msg_Err(p_demux, " No CPL found");
> this->CloseXml();
> @@ -833,6 +833,14 @@ int PKL::FindCPLs()
> return this->vec_cpl.size();
> }
>
> +CPL * PKL::getCPL(int pos)
> +{
> + if( pos < 0 || this->vec_cpl.size() <= pos )
> + return NULL;
> + else
> + return this->vec_cpl[pos];
> +}
> +
>
> int PKL::ParseAssetList(string p_node, int p_type) {
> string node;
> diff --git a/modules/access/dcp/dcpparser.h b/modules/access/dcp/dcpparser.h
> index e3a6a6a..1447fb6 100644
> --- a/modules/access/dcp/dcpparser.h
> +++ b/modules/access/dcp/dcpparser.h
> @@ -77,10 +77,13 @@ struct dcp_t
> int i_video_entry; /* Picture entry point */
> int i_audio_entry; /* Sound entry point */
>
> + int i_cpl_num; /* number of the CPL we will read */
> +
> dcp_t():
> p_asset_list(NULL),
> i_video_entry(0),
> - i_audio_entry(0) {};
> + i_audio_entry(0),
> + i_cpl_num(0) {};
>
> ~dcp_t( ) {
> vlc_delete_all(pkls);
> @@ -265,7 +268,7 @@ public:
> virtual int Parse();
>
> int FindCPLs();
> - CPL *getCPL(int pos) { return this->vec_cpl[pos]; };
> + CPL *getCPL(int pos);
>
> private:
> AssetList *asset_list;
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list