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 (10)
  • Lyndon Brown's avatar
    demux/subtitle: clarify comment · 550cd952
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    this does not just apply to srt files, it is done for all formats handled
    by this demuxer. it also needed additional clarification.
    550cd952
  • Lyndon Brown's avatar
    demux/subtitle: remove pointless statement · eb07c5f2
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    we find the period for the extension and set it to null such that we can
    then find the second to last period that should preceed the substring we
    want to extract. there is absolutely no point in restoring the period
    afterwards in the working copy which we are then just about to destroy.
    
    the comment did not even make any sense.
    eb07c5f2
  • Lyndon Brown's avatar
    demux/subtitle: add missing alloc check · d582bf98
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    d582bf98
  • Lyndon Brown's avatar
    demux/subtitle: minor reorganisation of filename language extraction · 04aed075
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    (non-functional)
    
    prepares for handling an alternate common pattern; removes unnecessary
    variable (we can reuse the `psz_tmp` var now instead of also having
    `psz_language_begin`); better readability.
    04aed075
  • Lyndon Brown's avatar
    demux/subtitle: use only filename for filename language substr extraction · 0984f11c
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    ...and thus prevent some ugly failures.
    
    (the string given to the function is the full filepath not just the filename).
    
    the attempt to determine the language from subtitle filenames is based upon
    a single common pattern - PATH/filename.LANG.ext. whilst it works just fine
    for this pattern, it is not the only pattern commonly used, for instance
    PATH/Subs/x_LANG.ext (where 'x' is an integer).
    
    in such cases where the period for the extension is the only one in the
    filename, the function could produce an ugly result should any directory in
    the path happen to contain a period (if not, NULL would be returned). it
    would incorrectly capture a chunk of the path as part of the substring
    extraction, producing results like "FOOBAR/Subs/1_English" (or worse) which
    then end up as the language name displayed under the subtitle menu and
    elsewhere.
    
    this commit strips the string processed down to filename only and thus
    prevents such ugliness. the next commit will introduce proper handling for
    the just mentioned alternate common pattern.
    0984f11c
  • Lyndon Brown's avatar
    demux/subtitle: handle PATH/Subs/1_English.srt type filename lang extraction · 0dd41106
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    the only pattern handled was PATH/filename.LANG.ext. another common one is
    PATH/Subs/x_LANG.ext which this adds handling for.
    
    this simply replies upon falling back to trying to get the substring after
    the last underscore if trying to get the substring after a period fails.
    
    we do not explicitly require the second pattern to only occur in files
    found under a 'Subs' subdir, since it is not certain that there is value in
    implementing such a restriction.
    0dd41106
  • Lyndon Brown's avatar
    demux/subtitle: prepare for lang detection via codec properties · 58ce4b96
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    at least one subtitle format handled by this demuxer may hold the language
    as a property specified within the file. we should allow the parser to
    extract and use that as an alternative to the filename based substring
    extraction. this sets things up to allow the parser functions to provide
    that extracted property string.
    58ce4b96
  • Lyndon Brown's avatar
    demux/subtitles: clarify debug message · 17b2c064
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    the substring obtained from filename extraction in some cases is perfect
    but in other cases may not be a language at all, just some portion of the
    filename. stating 'detected language FOO' is a bit odd if it turns out to
    not actually be a language name that we've extracted. let's fix that by
    clarifying what we've actually retrieved, and thus distinguish the less
    reliable filename extraction result from the likely more reliable property
    available in some subtitle files.
    
    also, enclose in quotes in both cases. for the filename based case since
    this simply makes sense. in the property case, since this may be a language
    code, as it is for ASS/SSA.
    17b2c064
  • Lyndon Brown's avatar
    demux/subtitles: capture language attribute from SSA/ASS files · 49c7098e
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    ... for language identification.
    
    this info property has been supported by libass since v0.10.0. it is currently
    a 2-char iso-639-1 code.
    
    libass commit adding support:
    https://github.com/libass/libass/commit/c979365946b2dc2499ede862b6f7da15f9bc0ed1
    
    discussion about enhancing the attribute to support 3-char iso-639-2 codes,
    possibly bcp-47: https://github.com/libass/libass/issues/404
    49c7098e
  • Lyndon Brown's avatar
    demux/subtitles: avoid unnecessary allocations for SSA/ASS · d7d8cff6
    Lyndon Brown authored and Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf committed
    we only need to allocate the `psz_text` buffer when handling `Dialogue`
    and `Language` lines. restricting allocation to lines beginning with 'D'
    or 'L' is a simple way of avoiding most/all that are unnecessary.
    d7d8cff6
......@@ -128,6 +128,7 @@ typedef struct
vlc_tick_t i_microsecperframe;
char *psz_header; /* SSA */
char *psz_lang;
struct
{
......@@ -318,6 +319,7 @@ static int Open ( vlc_object_t *p_this )
p_sys->subtitles.p_array = NULL;
p_sys->props.psz_header = NULL;
p_sys->props.psz_lang = NULL;
p_sys->props.i_microsecperframe = VLC_TICK_FROM_MS(40);
p_sys->props.jss.b_inited = false;
p_sys->props.mpsub.b_inited = false;
......@@ -686,15 +688,20 @@ static int Open ( vlc_object_t *p_this )
if( p_sys->subtitles.i_count > 0 )
p_sys->i_length = p_sys->subtitles.p_array[p_sys->subtitles.i_count-1].i_stop;
/* Stupid language detection in the filename */
char * psz_language = get_language_from_filename( p_demux->psz_filepath );
if( psz_language )
if( p_sys->props.psz_lang )
{
fmt.psz_language = psz_language;
msg_Dbg( p_demux, "detected language %s of subtitle: %s", psz_language,
fmt.psz_language = p_sys->props.psz_lang;
p_sys->props.psz_lang = NULL;
msg_Dbg( p_demux, "detected language '%s' of subtitle: %s", fmt.psz_language,
p_demux->psz_location );
}
else
{
fmt.psz_language = get_language_from_filename( p_demux->psz_filepath );
if( fmt.psz_language )
msg_Dbg( p_demux, "selected '%s' as possible filename language substring of subtitle: %s",
fmt.psz_language, p_demux->psz_location );
}
char *psz_description = var_InheritString( p_demux, "sub-description" );
if( psz_description && *psz_description )
......@@ -1232,12 +1239,25 @@ static int ParseSSA( vlc_object_t *p_obj, subs_properties_t *p_props,
* Dialogue: Layer#,0:02:40.65,0:02:41.79,Wolf main,Cher,0000,0000,0000,,Et les enregistrements de ses ondes delta ?
*/
/* The output text is - at least, not removing numbers - 18 chars shorter than the input text. */
psz_text = malloc( strlen(s) );
if( !psz_text )
return VLC_ENOMEM;
psz_text = NULL;
if( s[0] == 'D' || s[0] == 'L' )
{
/* The output text is always shorter than the input text. */
psz_text = malloc( strlen(s) );
if( !psz_text )
return VLC_ENOMEM;
}
if( sscanf( s,
/* Try to capture the language property */
if( s[0] == 'L' &&
sscanf( s, "Language: %[^\r\n]", psz_text ) == 1 )
{
free( p_props->psz_lang ); /* just in case of multiple instances */
p_props->psz_lang = psz_text;
psz_text = NULL;
}
else if( s[0] == 'D' &&
sscanf( s,
"Dialogue: %15[^,],%d:%d:%d.%d,%d:%d:%d.%d,%[^\r\n]",
temp,
&h1, &m1, &s1, &c1,
......@@ -2416,24 +2436,37 @@ static int ParseSCC( vlc_object_t *p_obj, subs_properties_t *p_props,
return VLC_SUCCESS;
}
/* Matches filename.xx.srt */
/* Tries to extract language from common filename patterns PATH/filename.LANG.ext
and PATH/Subs/x_LANG.ext (where 'x' is an integer). */
static char * get_language_from_filename( const char * psz_sub_file )
{
char *psz_ret = NULL;
char *psz_tmp, *psz_language_begin;
char *psz_tmp;
if( !psz_sub_file )
return NULL;
if( !psz_sub_file ) return NULL;
char *psz_work = strdup( psz_sub_file );
/* Remove path */
const char *psz_fname = strrchr( psz_sub_file, DIR_SEP_CHAR );
psz_fname = (psz_fname == NULL) ? psz_sub_file : psz_fname + 1;
/* Removing extension, but leaving the dot */
psz_tmp = strrchr( psz_work, '.' );
char *psz_work = strdup( psz_fname );
if( !psz_work )
return NULL;
psz_tmp = strrchr( psz_work, '.' ); /* Find extension */
if( psz_tmp )
{
psz_tmp[0] = '\0';
psz_language_begin = strrchr( psz_work, '.' );
if( psz_language_begin )
psz_ret = strdup(++psz_language_begin);
psz_tmp[0] = '.';
psz_tmp[0] = '\0'; /* Remove it */
/* Get substr after next last period - hopefully our language string */
psz_tmp = strrchr( psz_work, '.' );
/* Otherwise try substr after last underscore for alternate pattern */
if( !psz_tmp )
psz_tmp = strchr( psz_work, '_' );
if( psz_tmp )
psz_ret = strdup(++psz_tmp);
}
free( psz_work );
......