Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
404 results
Show changes
Commits on Source (6)
This diff is collapsed.
......@@ -25,6 +25,11 @@
#define LIBVLC_INPUT_ES_OUT_H 1
#include <vlc_common.h>
#include <vlc_es_out.h>
#include "input_internal.h"
typedef struct input_thread_t input_thread_t;
enum es_out_mode_e
{
......
......@@ -36,30 +36,37 @@
#include "input_internal.h"
#include "es_out.h"
typedef struct
struct es_out_source
{
es_out_t out;
input_source_t *in;
es_out_t *parent_out;
} es_out_sys_t;
} ;
static struct es_out_source *
PRIV(es_out_t *out)
{
struct es_out_source *source = container_of(out, struct es_out_source, out);
return source;
}
static es_out_id_t *EsOutSourceAdd(es_out_t *out, input_source_t *in,
const es_format_t *fmt)
{
assert(in == NULL);
es_out_sys_t *sys = container_of(out, es_out_sys_t, out);
struct es_out_source *sys = PRIV(out);
return sys->parent_out->cbs->add(sys->parent_out, sys->in, fmt);
}
static int EsOutSourceSend(es_out_t *out, es_out_id_t *es, block_t *block)
{
es_out_sys_t *sys = container_of(out, es_out_sys_t, out);
struct es_out_source *sys = PRIV(out);
return es_out_Send(sys->parent_out, es, block);
}
static void EsOutSourceDel(es_out_t *out, es_out_id_t *es)
{
es_out_sys_t *sys = container_of(out, es_out_sys_t, out);
struct es_out_source *sys = PRIV(out);
es_out_Del(sys->parent_out, es);
}
......@@ -67,7 +74,7 @@ static int EsOutSourceControl(es_out_t *out, input_source_t *in, int query,
va_list args)
{
assert(in == NULL);
es_out_sys_t *sys = container_of(out, es_out_sys_t, out);
struct es_out_source *sys = PRIV(out);
return sys->parent_out->cbs->control(sys->parent_out, sys->in, query, args);
}
......@@ -75,13 +82,13 @@ static int EsOutSourcePrivControl(es_out_t *out, input_source_t *in, int query,
va_list args)
{
assert(in == NULL);
es_out_sys_t *sys = container_of(out, es_out_sys_t, out);
struct es_out_source *sys = PRIV(out);
return sys->parent_out->cbs->priv_control(sys->parent_out, sys->in, query, args);
}
static void EsOutSourceDestroy(es_out_t *out)
{
es_out_sys_t *sys = container_of(out, es_out_sys_t, out);
struct es_out_source *sys = PRIV(out);
free(sys);
}
......@@ -99,7 +106,7 @@ es_out_t *input_EsOutSourceNew(es_out_t *parent_out, input_source_t *in)
.priv_control = EsOutSourcePrivControl,
};
es_out_sys_t *sys = malloc(sizeof(*sys));
struct es_out_source *sys = malloc(sizeof(*sys));
if (!sys)
return NULL;
......
......@@ -215,6 +215,7 @@ struct ts_storage_t
typedef struct
{
vlc_thread_t thread;
struct es_out_timeshift *ts;
input_thread_t *p_input;
es_out_t *p_tsout;
es_out_t *p_out;
......@@ -252,7 +253,7 @@ struct es_out_id_t
es_out_id_t *p_es;
};
typedef struct
struct es_out_timeshift
{
input_thread_t *p_input;
es_out_t *p_out;
......@@ -279,7 +280,7 @@ typedef struct
es_out_id_t **pp_es;
es_out_t out;
} es_out_sys_t;
};
static void Del ( es_out_t *, es_out_id_t * );
......@@ -319,11 +320,11 @@ static void CmdCleanControl( ts_cmd_control_t * );
static void CmdCleanPrivControl( ts_cmd_privcontrol_t * );
/* */
static void CmdExecuteAdd ( es_out_t *, ts_cmd_add_t * );
static int CmdExecuteSend ( es_out_t *, ts_cmd_send_t * );
static void CmdExecuteDel ( es_out_t *, ts_cmd_del_t * );
static int CmdExecuteControl( es_out_t *, ts_cmd_control_t * );
static int CmdExecutePrivControl( es_out_t *, ts_cmd_privcontrol_t * );
static void CmdExecuteAdd (struct es_out_timeshift *, ts_cmd_add_t *);
static int CmdExecuteSend (struct es_out_timeshift *, ts_cmd_send_t *);
static void CmdExecuteDel (struct es_out_timeshift *, ts_cmd_del_t *);
static int CmdExecuteControl(struct es_out_timeshift *, ts_cmd_control_t *);
static int CmdExecutePrivControl(struct es_out_timeshift *, ts_cmd_privcontrol_t *);
/* File helpers */
static int GetTmpFile( char **filename, const char *dirname )
......@@ -356,9 +357,15 @@ static int GetTmpFile( char **filename, const char *dirname )
/*****************************************************************************
* Internal functions
*****************************************************************************/
static struct es_out_timeshift * PRIV(es_out_t *out)
{
struct es_out_timeshift *sys = container_of(out, struct es_out_timeshift, out);
return sys;
}
static void Destroy( es_out_t *p_out )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
if( p_sys->b_delayed )
{
......@@ -376,7 +383,7 @@ static void Destroy( es_out_t *p_out )
static es_out_id_t *Add( es_out_t *p_out, input_source_t *in, const es_format_t *p_fmt )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
ts_cmd_add_t cmd;
es_out_id_t *p_es = malloc( sizeof( *p_es ) );
......@@ -397,7 +404,7 @@ static es_out_id_t *Add( es_out_t *p_out, input_source_t *in, const es_format_t
if( p_sys->b_delayed )
TsPushCmd( p_sys->p_ts, (ts_cmd_t *) &cmd );
else
CmdExecuteAdd( p_out, &cmd );
CmdExecuteAdd(p_sys, &cmd);
vlc_mutex_unlock( &p_sys->lock );
......@@ -405,7 +412,7 @@ static es_out_id_t *Add( es_out_t *p_out, input_source_t *in, const es_format_t
}
static int Send( es_out_t *p_out, es_out_id_t *p_es, block_t *p_block )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
ts_cmd_send_t cmd;
int i_ret = VLC_SUCCESS;
......@@ -417,7 +424,7 @@ static int Send( es_out_t *p_out, es_out_id_t *p_es, block_t *p_block )
if( p_sys->b_delayed )
TsPushCmd( p_sys->p_ts, (ts_cmd_t *)&cmd );
else
i_ret = CmdExecuteSend( p_out, &cmd) ;
i_ret = CmdExecuteSend(p_sys, &cmd) ;
vlc_mutex_unlock( &p_sys->lock );
......@@ -425,7 +432,7 @@ static int Send( es_out_t *p_out, es_out_id_t *p_es, block_t *p_block )
}
static void Del( es_out_t *p_out, es_out_id_t *p_es )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
ts_cmd_del_t cmd;
vlc_mutex_lock( &p_sys->lock );
......@@ -436,7 +443,7 @@ static void Del( es_out_t *p_out, es_out_id_t *p_es )
if( p_sys->b_delayed )
TsPushCmd( p_sys->p_ts, (ts_cmd_t *)&cmd );
else
CmdExecuteDel( p_out, &cmd );
CmdExecuteDel(p_sys, &cmd);
vlc_mutex_unlock( &p_sys->lock );
}
......@@ -477,11 +484,11 @@ static inline int es_out_in_PrivControl( es_out_t *p_out, input_source_t *in,
return i_result;
}
static int ControlLockedGetEmpty( es_out_t *p_out, input_source_t *in,
bool *pb_empty )
static int
ControlLockedGetEmpty(struct es_out_timeshift *p_sys,
input_source_t *in,
bool *pb_empty )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
if( p_sys->b_delayed && TsHasCmd( p_sys->p_ts ) )
*pb_empty = false;
else
......@@ -492,10 +499,12 @@ static int ControlLockedGetEmpty( es_out_t *p_out, input_source_t *in,
return VLC_SUCCESS;
}
static int ControlLockedGetWakeup( es_out_t *p_out, input_source_t *in, vlc_tick_t *pi_wakeup )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
static int
ControlLockedGetWakeup(struct es_out_timeshift *p_sys,
input_source_t *in,
vlc_tick_t *pi_wakeup)
{
if( p_sys->b_delayed )
{
assert( !input_CanPaceControl( p_sys->p_input ) );
......@@ -510,10 +519,11 @@ static int ControlLockedGetWakeup( es_out_t *p_out, input_source_t *in, vlc_tick
return VLC_SUCCESS;
}
static int ControlLockedGetBuffering( es_out_t *p_out, input_source_t *in, bool *pb_buffering )
static int
ControlLockedGetBuffering(struct es_out_timeshift *p_sys,
input_source_t *in,
bool *pb_buffering)
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
if( p_sys->b_delayed )
*pb_buffering = true;
else
......@@ -525,9 +535,13 @@ static int ControlLockedGetBuffering( es_out_t *p_out, input_source_t *in, bool
return VLC_SUCCESS;
}
static int ControlLockedSetPauseState( es_out_t *p_out, input_source_t *in, bool b_source_paused, bool b_paused, vlc_tick_t i_date )
static int
ControlLockedSetPauseState(struct es_out_timeshift *p_sys,
input_source_t *in,
bool b_source_paused,
bool b_paused,
vlc_tick_t i_date)
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
int i_ret;
if( !p_sys->b_delayed && !b_source_paused == !b_paused )
......@@ -541,7 +555,7 @@ static int ControlLockedSetPauseState( es_out_t *p_out, input_source_t *in, bool
if( !input_CanPaceControl( p_sys->p_input ) )
{
if( !p_sys->b_delayed )
TsStart( p_out );
TsStart(&p_sys->out);
if( p_sys->b_delayed )
i_ret = TsChangePause( p_sys->p_ts, b_source_paused, b_paused, i_date );
}
......@@ -561,9 +575,13 @@ static int ControlLockedSetPauseState( es_out_t *p_out, input_source_t *in, bool
}
return i_ret;
}
static int ControlLockedSetRate( es_out_t *p_out, input_source_t *in, float src_rate, float rate )
static int
ControlLockedSetRate(struct es_out_timeshift *p_sys,
input_source_t *in,
float src_rate,
float rate)
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
int i_ret;
if( !p_sys->b_delayed && src_rate == rate )
......@@ -577,7 +595,7 @@ static int ControlLockedSetRate( es_out_t *p_out, input_source_t *in, float src_
if( !input_CanPaceControl( p_sys->p_input ) )
{
if( !p_sys->b_delayed )
TsStart( p_out );
TsStart(&p_sys->out);
if( p_sys->b_delayed )
i_ret = TsChangeRate( p_sys->p_ts, src_rate, rate );
}
......@@ -598,17 +616,15 @@ static int ControlLockedSetRate( es_out_t *p_out, input_source_t *in, float src_
}
return i_ret;
}
static int ControlLockedSetFrameNext( es_out_t *p_out, input_source_t *in )
static int ControlLockedSetFrameNext(struct es_out_timeshift *p_sys, input_source_t *in )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
return es_out_in_PrivControl( p_sys->p_out, in, ES_OUT_PRIV_SET_FRAME_NEXT );
}
static int ControlLocked( es_out_t *p_out, input_source_t *in, int i_query,
va_list args )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
switch( i_query )
{
......@@ -641,7 +657,7 @@ static int ControlLocked( es_out_t *p_out, input_source_t *in, int i_query,
TsPushCmd( p_sys->p_ts, (ts_cmd_t *) &cmd );
return VLC_SUCCESS;
}
return CmdExecuteControl( p_out, &cmd );
return CmdExecuteControl(p_sys, &cmd);
}
/* Special control when delayed */
......@@ -692,7 +708,7 @@ static int ControlLocked( es_out_t *p_out, input_source_t *in, int i_query,
case ES_OUT_GET_EMPTY:
{
bool *pb_empty = va_arg( args, bool* );
return ControlLockedGetEmpty( p_out, in, pb_empty );
return ControlLockedGetEmpty(p_sys, in, pb_empty);
}
case ES_OUT_POST_SUBNODE:
......@@ -706,7 +722,7 @@ static int ControlLocked( es_out_t *p_out, input_source_t *in, int i_query,
static int Control( es_out_t *p_tsout, input_source_t *in, int i_query, va_list args )
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_tsout);
int i_ret;
vlc_mutex_lock( &p_sys->lock );
......@@ -722,7 +738,7 @@ static int Control( es_out_t *p_tsout, input_source_t *in, int i_query, va_list
static int PrivControlLocked( es_out_t *p_tsout, input_source_t *in, int i_query, va_list args )
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_tsout);
switch( i_query )
{
......@@ -740,17 +756,17 @@ static int PrivControlLocked( es_out_t *p_tsout, input_source_t *in, int i_query
TsPushCmd( p_sys->p_ts, &cmd );
return VLC_SUCCESS;
}
return CmdExecutePrivControl( p_tsout, &cmd.privcontrol );
return CmdExecutePrivControl(p_sys, &cmd.privcontrol);
}
case ES_OUT_PRIV_GET_WAKE_UP: /* TODO ? */
{
vlc_tick_t *pi_wakeup = va_arg( args, vlc_tick_t* );
return ControlLockedGetWakeup( p_tsout, in, pi_wakeup );
return ControlLockedGetWakeup(p_sys, in, pi_wakeup);
}
case ES_OUT_PRIV_GET_BUFFERING:
{
bool *pb_buffering = va_arg( args, bool* );
return ControlLockedGetBuffering( p_tsout, in, pb_buffering );
return ControlLockedGetBuffering(p_sys, in, pb_buffering);
}
case ES_OUT_PRIV_SET_PAUSE_STATE:
{
......@@ -758,18 +774,18 @@ static int PrivControlLocked( es_out_t *p_tsout, input_source_t *in, int i_query
const bool b_paused = (bool)va_arg( args, int );
const vlc_tick_t i_date = va_arg( args, vlc_tick_t );
return ControlLockedSetPauseState( p_tsout, in, b_source_paused, b_paused, i_date );
return ControlLockedSetPauseState(p_sys, in, b_source_paused, b_paused, i_date);
}
case ES_OUT_PRIV_SET_RATE:
{
const float src_rate = va_arg( args, double );
const float rate = va_arg( args, double );
return ControlLockedSetRate( p_tsout, in, src_rate, rate );
return ControlLockedSetRate(p_sys, in, src_rate, rate);
}
case ES_OUT_PRIV_SET_FRAME_NEXT:
{
return ControlLockedSetFrameNext( p_tsout, in );
return ControlLockedSetFrameNext(p_sys, in);
}
case ES_OUT_PRIV_GET_GROUP_FORCED:
return es_out_in_vaPrivControl( p_sys->p_out, in, i_query, args );
......@@ -792,7 +808,7 @@ static int PrivControlLocked( es_out_t *p_tsout, input_source_t *in, int i_query
static int PrivControl( es_out_t *p_tsout, input_source_t *in, int i_query, va_list args )
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_tsout);
int i_ret;
vlc_mutex_lock( &p_sys->lock );
......@@ -821,7 +837,7 @@ static const struct es_out_callbacks es_out_timeshift_cbs =
*****************************************************************************/
es_out_t *input_EsOutTimeshiftNew( input_thread_t *p_input, es_out_t *p_next_out, float rate )
{
es_out_sys_t *p_sys = malloc( sizeof(*p_sys) );
struct es_out_timeshift *p_sys = malloc( sizeof(*p_sys) );
if( !p_sys )
return NULL;
......@@ -918,7 +934,7 @@ static void TsDestroy( ts_thread_t *p_ts )
}
static int TsStart( es_out_t *p_out )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
ts_thread_t *p_ts;
assert( !p_sys->b_delayed );
......@@ -930,6 +946,7 @@ static int TsStart( es_out_t *p_out )
p_ts->i_tmp_size_max = p_sys->i_tmp_size_max;
p_ts->psz_tmp_path = p_sys->psz_tmp_path;
p_ts->p_input = p_sys->p_input;
p_ts->ts = p_sys;
p_ts->p_out = p_sys->p_out;
p_ts->p_tsout = p_out;
vlc_mutex_init( &p_ts->lock );
......@@ -961,7 +978,7 @@ static int TsStart( es_out_t *p_out )
}
static void TsAutoStop( es_out_t *p_out )
{
es_out_sys_t *p_sys = container_of(p_out, es_out_sys_t, out);
struct es_out_timeshift *p_sys = PRIV(p_out);
if( !p_sys->b_delayed || !TsIsUnused( p_sys->p_ts ) )
return;
......@@ -1206,23 +1223,23 @@ static void *TsRun( void *p_data )
switch( cmd.header.i_type )
{
case C_ADD:
CmdExecuteAdd( p_ts->p_tsout, &cmd.add );
CmdExecuteAdd(p_ts->ts, &cmd.add);
CmdCleanAdd( &cmd.add );
break;
case C_SEND:
CmdExecuteSend( p_ts->p_tsout, &cmd.send );
CmdExecuteSend(p_ts->ts, &cmd.send );
CmdCleanSend( &cmd.send );
break;
case C_CONTROL:
CmdExecuteControl( p_ts->p_tsout, &cmd.control );
CmdExecuteControl(p_ts->ts, &cmd.control);
CmdCleanControl( &cmd.control );
break;
case C_PRIVCONTROL:
CmdExecutePrivControl( p_ts->p_tsout, &cmd.privcontrol );
CmdExecutePrivControl(p_ts->ts, &cmd.privcontrol);
CmdCleanPrivControl( &cmd.privcontrol );
break;
case C_DEL:
CmdExecuteDel( p_ts->p_tsout, &cmd.del );
CmdExecuteDel(p_ts->ts, &cmd.del);
break;
default:
vlc_assert_unreachable();
......@@ -1488,11 +1505,10 @@ static int CmdInitAdd( ts_cmd_add_t *p_cmd, input_source_t *in, es_out_id_t *p_
}
return VLC_SUCCESS;
}
static void CmdExecuteAdd( es_out_t *p_tsout, ts_cmd_add_t *p_cmd )
static void CmdExecuteAdd(struct es_out_timeshift *p_sys, ts_cmd_add_t *p_cmd)
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
p_cmd->p_es->p_es = p_sys->p_out->cbs->add( p_sys->p_out, p_cmd->in,
p_cmd->p_fmt );
es_out_t *out = p_sys->p_out;
p_cmd->p_es->p_es = out->cbs->add(out, p_cmd->in, p_cmd->p_fmt);
TAB_APPEND( p_sys->i_es, p_sys->pp_es, p_cmd->p_es );
}
static void CmdCleanAdd( ts_cmd_add_t *p_cmd )
......@@ -1510,9 +1526,9 @@ static void CmdInitSend( ts_cmd_send_t *p_cmd, es_out_id_t *p_es, block_t *p_blo
p_cmd->p_es = p_es;
p_cmd->p_block = p_block;
}
static int CmdExecuteSend( es_out_t *p_tsout, ts_cmd_send_t *p_cmd )
static int CmdExecuteSend(struct es_out_timeshift *p_sys, ts_cmd_send_t *p_cmd)
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
block_t *p_block = p_cmd->p_block;
p_cmd->p_block = NULL;
......@@ -1538,9 +1554,8 @@ static int CmdInitDel( ts_cmd_del_t *p_cmd, es_out_id_t *p_es )
p_cmd->p_es = p_es;
return VLC_SUCCESS;
}
static void CmdExecuteDel( es_out_t *p_tsout, ts_cmd_del_t *p_cmd )
static void CmdExecuteDel(struct es_out_timeshift *p_sys, ts_cmd_del_t *p_cmd)
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
if( p_cmd->p_es->p_es )
es_out_Del( p_sys->p_out, p_cmd->p_es->p_es );
TAB_REMOVE( p_sys->i_es, p_sys->pp_es, p_cmd->p_es );
......@@ -1690,9 +1705,11 @@ static int CmdInitControl( ts_cmd_control_t *p_cmd, input_source_t *in,
return VLC_SUCCESS;
}
static int CmdExecuteControl( es_out_t *p_tsout, ts_cmd_control_t *p_cmd )
static int
CmdExecuteControl(struct es_out_timeshift *p_sys,
ts_cmd_control_t *p_cmd)
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
const int i_query = p_cmd->i_query;
input_source_t *in = p_cmd->in;
......@@ -1840,9 +1857,8 @@ static int CmdInitPrivControl( ts_cmd_privcontrol_t *p_cmd, input_source_t *in,
return VLC_SUCCESS;
}
static int CmdExecutePrivControl( es_out_t *p_tsout, ts_cmd_privcontrol_t *p_cmd )
static int CmdExecutePrivControl(struct es_out_timeshift *p_sys, ts_cmd_privcontrol_t *p_cmd)
{
es_out_sys_t *p_sys = container_of(p_tsout, es_out_sys_t, out);
const int i_query = p_cmd->i_query;
input_source_t *in = p_cmd->in;
......