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
403 results
Show changes
Commits on Source (4)
......@@ -1227,7 +1227,10 @@ static void PacketizerGetCc( vlc_input_decoder_t *p_owner, decoder_t *p_dec_cc )
p_cc = p_dec_cc->pf_get_cc( p_dec_cc, &desc );
if( !p_cc )
return;
vlc_fifo_Unlock(p_owner->p_fifo);
DecoderPlayCc( p_owner, p_cc, &desc );
vlc_fifo_Lock(p_owner->p_fifo);
}
static void ModuleThread_QueueCc( decoder_t *p_videodec, vlc_frame_t *p_cc,
......@@ -1235,14 +1238,17 @@ static void ModuleThread_QueueCc( decoder_t *p_videodec, vlc_frame_t *p_cc,
{
vlc_input_decoder_t *p_owner = dec_get_owner( p_videodec );
if( unlikely( p_cc != NULL ) )
if (likely(p_cc == NULL))
return;
if (!p_owner->cc.b_supported ||
(p_owner->p_packetizer != NULL && p_owner->p_packetizer->pf_get_cc == NULL))
{
if( p_owner->cc.b_supported &&
( !p_owner->p_packetizer || !p_owner->p_packetizer->pf_get_cc ) )
DecoderPlayCc( p_owner, p_cc, p_desc );
else
block_Release( p_cc );
block_Release(p_cc);
return;
}
DecoderPlayCc(p_owner, p_cc, p_desc);
}
static int ModuleThread_PlayVideo( vlc_input_decoder_t *p_owner, picture_t *p_picture )
......
/*****************************************************************************
* input_decoder.c: test for vlc_input_decoder state machine
*****************************************************************************
* Copyright (C) 2022 VideoLabs
* Copyright (C) 2022-2023 VideoLabs
*
* Author: Alexandre Janniaux <ajanni@videolabs.io>
*
......@@ -112,6 +112,39 @@ static void CloseDecoder(vlc_object_t *obj)
vlc_video_context_Release(vctx);
}
static vlc_frame_t *PacketizerPacketize(decoder_t *dec, vlc_frame_t **in)
{
(void)dec;
if (in == NULL)
return NULL;
vlc_frame_t *ret = *in;
if (ret != NULL)
*in = NULL;
return ret;
}
static vlc_frame_t *PacketizerGetCC(decoder_t *dec, decoder_cc_desc_t *cc_desc)
{
struct input_decoder_scenario *scenario = &input_decoder_scenarios[current_scenario];
if (scenario->packetizer_getcc != NULL)
return scenario->packetizer_getcc(dec, cc_desc);
return NULL;
}
static int OpenPacketizer(vlc_object_t *obj)
{
decoder_t *dec = (decoder_t*)obj;
dec->pf_packetize = PacketizerPacketize;
dec->pf_get_cc = PacketizerGetCC;
dec->pf_flush = NULL;
es_format_Clean(&dec->fmt_out);
es_format_Copy(&dec->fmt_out, dec->fmt_in);
return VLC_SUCCESS;
}
static int OpenDecoder(vlc_object_t *obj)
{
decoder_t *dec = (decoder_t*)obj;
......@@ -121,6 +154,7 @@ static int OpenDecoder(vlc_object_t *obj)
vlc_decoder_device_Release(device);
dec->pf_decode = DecoderDecode;
dec->pf_get_cc = NULL;
dec->pf_flush = DecoderFlush;
es_format_Clean(&dec->fmt_out);
es_format_Copy(&dec->fmt_out, dec->fmt_in);
......@@ -179,9 +213,10 @@ static int OpenWindow(vlc_window_t *wnd)
static void *SoutFilterAdd(sout_stream_t *stream, const es_format_t *fmt,
const char *es_id)
{
(void)stream; (void)fmt; (void)es_id;
void *id = malloc(1);
(void)stream; (void)es_id;
vlc_fourcc_t *id = malloc(sizeof(*id));
assert(id != NULL);
*id = fmt->i_codec;
return id;
}
......@@ -207,6 +242,15 @@ static void SoutFilterFlush(sout_stream_t *stream, void *id)
scenario->sout_filter_flush(stream, id);
}
static int SoutFilterControl(sout_stream_t *stream, int query, va_list args)
{
(void)stream;
if (query != SOUT_STREAM_WANTS_SUBSTREAMS)
return VLC_EGENERIC;
*va_arg(args, bool *) = true;
return VLC_SUCCESS;
}
static int OpenSoutFilter(vlc_object_t *obj)
{
sout_stream_t *stream = (sout_stream_t *)obj;
......@@ -215,6 +259,7 @@ static int OpenSoutFilter(vlc_object_t *obj)
.del = SoutFilterDel,
.send = SoutFilterSend,
.flush = SoutFilterFlush,
.control = SoutFilterControl,
};
stream->ops = &ops;
return VLC_SUCCESS;
......@@ -226,6 +271,17 @@ static void on_state_changed(vlc_player_t *player, enum vlc_player_state state,
vlc_cond_signal(&player_cond);
}
static void on_track_list_changed(vlc_player_t *player,
enum vlc_player_list_action action,
const struct vlc_player_track *track,
void *data)
{
(void)player; (void)data;
struct input_decoder_scenario *scenario = &input_decoder_scenarios[current_scenario];
if (scenario->on_track_list_changed != NULL)
scenario->on_track_list_changed(action, track);
}
static void play_scenario(intf_thread_t *intf, struct input_decoder_scenario *scenario)
{
input_decoder_scenario_init();
......@@ -251,6 +307,7 @@ static void play_scenario(intf_thread_t *intf, struct input_decoder_scenario *sc
static const struct vlc_player_cbs player_cbs = {
.on_state_changed = on_state_changed,
.on_track_list_changed = on_track_list_changed,
};
vlc_player_Lock(player);
......@@ -311,6 +368,10 @@ vlc_module_begin()
set_callbacks(OpenDecoder, CloseDecoder)
set_capability("video decoder", INT_MAX)
add_submodule()
set_callback(OpenPacketizer)
set_capability("packetizer", INT_MAX)
add_submodule()
set_callback(OpenWindow)
set_capability("vout window", INT_MAX)
......
/*****************************************************************************
* input_decoder.h: test for input_decoder state machine
*****************************************************************************
* Copyright (C) 2022 VideoLabs
* Copyright (C) 2022-2023 VideoLabs
*
* Author: Alexandre Janniaux <ajanni@videolabs.io>
*
......@@ -27,6 +27,7 @@
typedef struct vout_display_t vout_display_t;
typedef struct intf_thread_t intf_thread_t;
typedef struct decoder_cc_desc_t decoder_cc_desc_t;
struct input_decoder_scenario {
const char *source;
......@@ -34,11 +35,14 @@ struct input_decoder_scenario {
void (*decoder_setup)(decoder_t *);
void (*decoder_destroy)(decoder_t *);
int (*decoder_decode)(decoder_t *, picture_t *);
vlc_frame_t * (*packetizer_getcc)(decoder_t *, decoder_cc_desc_t *);
void (*decoder_flush)(decoder_t *);
void (*display_prepare)(vout_display_t *vd, picture_t *pic);
void (*interface_setup)(intf_thread_t *intf);
int (*sout_filter_send)(sout_stream_t *stream, void *id, block_t *block);
void (*sout_filter_flush)(sout_stream_t *stream, void *id);
void (*on_track_list_changed)(enum vlc_player_list_action action,
const struct vlc_player_track *track);
};
......
/*****************************************************************************
* input_decoder_scenario.c: testflight for input_decoder state machine
*****************************************************************************
* Copyright (C) 2022 VideoLabs
* Copyright (C) 2022-2023 VideoLabs
*
* Author: Alexandre Janniaux <ajanni@videolabs.io>
*
......@@ -30,6 +30,7 @@
#include <vlc_messages.h>
#include <vlc_player.h>
#include <vlc_interface.h>
#include <vlc_frame.h>
#include <vlc_codec.h>
#include <vlc_vout_display.h>
......@@ -317,6 +318,19 @@ static int sout_filter_send(sout_stream_t *stream, void *id, block_t *block)
return VLC_SUCCESS;
}
static int sout_filter_wait_cc(sout_stream_t *stream, void *id, block_t *block)
{
(void)stream; (void)id;
block_Release(block);
vlc_fourcc_t *codec = id;
if (*codec == VLC_CODEC_CEA608)
{
scenario_data.stream_out_sent = true;
vlc_sem_post(&scenario_data.wait_ready_to_flush);
}
return VLC_SUCCESS;
}
static void sout_filter_flush(sout_stream_t *stream, void *id)
{
(void)stream; (void)id;
......@@ -324,7 +338,34 @@ static void sout_filter_flush(sout_stream_t *stream, void *id)
vlc_sem_post(&scenario_data.wait_stop);
}
const char source_800_600[] = "mock://video_track_count=1;length=100000000000;video_width=800;video_height=600";
static vlc_frame_t *packetizer_getcc(decoder_t *dec, decoder_cc_desc_t *cc_desc)
{
(void)dec;
cc_desc->i_608_channels = 1;
cc_desc->i_reorder_depth = -1;
vlc_frame_t *f = vlc_frame_Alloc(1);
assert(f != NULL);
return f;
}
static void on_track_list_changed_check_cea608(
enum vlc_player_list_action action,
const struct vlc_player_track *track)
{
if (action != VLC_PLAYER_LIST_ADDED)
return;
if (strcmp(vlc_es_id_GetStrId(track->es_id), "video/0/cc/spu/auto/0") != 0)
return;
assert(track->fmt.i_codec == VLC_CODEC_CEA608);
vlc_sem_post(&scenario_data.wait_stop);
}
#define source_800_600 "mock://video_track_count=1;length=100000000000;video_width=800;video_height=600"
struct input_decoder_scenario input_decoder_scenarios[] =
{{
.source = source_800_600,
......@@ -371,6 +412,21 @@ struct input_decoder_scenario input_decoder_scenarios[] =
.decoder_setup = decoder_i420_800_600,
.decoder_decode = decoder_decode_trigger_reload,
.decoder_destroy = decoder_destroy_trigger_update,
},
{
.source = source_800_600,
.sout = "#" MODULE_STRING,
.packetizer_getcc = packetizer_getcc,
.sout_filter_send = sout_filter_wait_cc,
.sout_filter_flush = sout_filter_flush,
.interface_setup = interface_setup_check_flush,
},
{
.source = source_800_600 ";video_packetized=false",
.packetizer_getcc = packetizer_getcc,
.decoder_setup = decoder_i420_800_600,
.decoder_decode = decoder_decode_drop,
.on_track_list_changed = on_track_list_changed_check_cea608,
}};
size_t input_decoder_scenarios_count = ARRAY_SIZE(input_decoder_scenarios);
......