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 (11)
......@@ -739,9 +739,14 @@ static int ReadDir(stream_t *access, input_item_node_t *node)
const char *title = NULL;
const char *artist = NULL;
const char *album_artist = NULL;
const char *album = NULL;
const char *genre = NULL;
const char *description = NULL;
const char *author = NULL;
const char *composer = NULL;
const char *arranger = NULL;
const char *isrc = NULL;
int year = 0;
#ifdef HAVE_LIBCDDB
......@@ -765,21 +770,27 @@ static int ReadDir(stream_t *access, input_item_node_t *node)
if(sys->cdtextc > 0)
{
const vlc_meta_t *m;
if (i + 1 < sys->cdtextc && (m = sys->cdtextv[i + 1]) != NULL)
/* Album CDtext data */
if ((m = sys->cdtextv[0]) != NULL)
{
ON_EMPTY(title, vlc_meta_Get(m, vlc_meta_Title));
ON_EMPTY(artist, vlc_meta_Get(m, vlc_meta_Artist));
ON_EMPTY(genre, vlc_meta_Get(m, vlc_meta_Genre));
ON_EMPTY(description, vlc_meta_Get(m, vlc_meta_Description));
}
/* Album CDtext data */
if ((m = sys->cdtextv[0]) != NULL)
if (i + 1 < sys->cdtextc && (m = sys->cdtextv[i + 1]) != NULL)
{
ON_EMPTY(title, vlc_meta_Get(m, vlc_meta_Title));
ON_EMPTY(artist, vlc_meta_Get(m, vlc_meta_Artist));
ON_EMPTY(album_artist,vlc_meta_Get(m, vlc_meta_AlbumArtist));
ON_EMPTY(album, vlc_meta_Get(m, vlc_meta_Album));
ON_EMPTY(genre, vlc_meta_Get(m, vlc_meta_Genre));
ON_EMPTY(description, vlc_meta_Get(m, vlc_meta_Description));
author = vlc_meta_GetExtra(m, "AUTHOR");
composer = vlc_meta_GetExtra(m, "COMPOSER");
arranger = vlc_meta_GetExtra(m, "ARRANGER");
isrc = vlc_meta_GetExtra(m, "ISRC");
}
}
......@@ -832,6 +843,15 @@ static int ReadDir(stream_t *access, input_item_node_t *node)
if (NONEMPTY(album))
input_item_SetAlbum(item, album);
if (NONEMPTY(author))
vlc_meta_AddExtra(item->p_meta, "AUTHOR", author);
if (NONEMPTY(composer))
vlc_meta_AddExtra(item->p_meta, "COMPOSER", composer);
if (NONEMPTY(arranger))
vlc_meta_AddExtra(item->p_meta, "ARRANGER", arranger);
if (NONEMPTY(isrc))
vlc_meta_AddExtra(item->p_meta, "ISRC", isrc);
if (year != 0)
{
char yearbuf[5];
......
......@@ -49,6 +49,7 @@
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#include <assert.h>
#include <vlc_common.h>
#include <vlc_access.h>
......@@ -1194,6 +1195,24 @@ enum cdtext_charset_e
CDTEXT_CHARSET_MSJIS = 0x80,
};
typedef enum {
cd_text_title = 0x80,
cd_text_performer = 0x81,
cd_text_songwriter = 0x82,
cd_text_composer = 0x83,
cd_text_arrangers = 0x84,
cd_text_message = 0x85,
cd_text_discid = 0x86, // text & binary (track 0)
cd_text_genre = 0x87, // text & binary (track 0)
cd_text_TOC = 0x88, // binary (track 0)
cd_text_TOC2 = 0x89, // binary (track 0)
cd_text_closed_info = 0x8d, // (track 0)
cd_text_ean_isrc = 0x8e,
cd_text_block_size = 0x8f, // binary
cd_text_meta_invalid = 0x00,
} cd_text_pack_type;
static void CdTextAppendPayload( const char *buffer, size_t i_len,
enum cdtext_charset_e e_charset, char **ppsz_text )
{
......@@ -1342,7 +1361,7 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
{
char *pppsz_info[CDTEXT_MAX_TRACKS + 1][0x10];
int i_track_last = -1;
if( i_buffer < 4 )
if( i_buffer <= 4 )
return -1;
p_buffer += 4;
......@@ -1354,9 +1373,10 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
{
const uint8_t *p_pack = &p_buffer[CDTEXT_PACK_SIZE*i];
const uint8_t i_block_number = (p_pack[3] >> 4) & 0x07;
const cd_text_pack_type i_pack_type = p_pack[0];
if( i_block_number > 0 )
continue;
if( p_pack[0] == 0x8f )
if( i_pack_type == cd_text_block_size )
{
const int i_track = p_pack[1] & 0x7f;
/* can't be higher than 3 blocks */
......@@ -1390,12 +1410,12 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
char textbuffer[CDTEXT_TEXT_BUFFER];
size_t i_textbuffer = 0;
size_t i_repeatbuffer = 0;
uint8_t i_prev_pack_type = 0x00;
cd_text_pack_type i_prev_pack_type = cd_text_meta_invalid;
for( int i = 0; i < i_buffer/CDTEXT_PACK_SIZE; i++ )
{
const uint8_t *p_pack = &p_buffer[CDTEXT_PACK_SIZE*i];
const uint8_t i_pack_type = p_pack[0];
const cd_text_pack_type i_pack_type = p_pack[0];
//const int i_sequence_number = p_block[2];
const uint8_t i_block_number = (p_pack[3] >> 4) & 0x07;
//const int i_crc = (p_block[4+12] << 8) | (p_block[4+13] << 0);
......@@ -1408,35 +1428,33 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
}
i_prev_pack_type = i_pack_type;
uint8_t i_track = p_pack[1] & 0x7f;
if( i_track > CDTEXT_MAX_TRACKS ||
(p_pack[1] & 0x80) /* extension flag */ ||
if( (p_pack[1] & 0x80) /* extension flag */ ||
i_block_number > 0 /* support only first language */
)
{
i_prev_pack_type = 0x00;
i_prev_pack_type = cd_text_meta_invalid;
continue;
}
/* */
switch( i_pack_type )
{
case 0x80:
case 0x81:
case 0x85:
case 0x87:
case cd_text_title:
case cd_text_performer:
case cd_text_message:
case cd_text_genre:
case cd_text_songwriter:
case cd_text_composer:
case cd_text_arrangers:
case cd_text_ean_isrc:
{
CdTextParsePackText( p_pack, e_textpackcharset,
&i_textbuffer, &i_repeatbuffer, textbuffer,
&i_track_last, pppsz_info );
break;
}
case 0x82:
case 0x83:
case 0x84:
case 0x86:
case 0x8d:
case 0x8e:
case cd_text_discid:
case cd_text_closed_info:
default:
continue;
}
......@@ -1456,6 +1474,11 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
/* */
const char *psz_default = pppsz_info[0][j];
const char *psz_value = pppsz_info[i][j];
// discard junk values
if (psz_value && (psz_value[0] == '\0' || (psz_value[0] == ' ' && psz_value[1] == '\0')))
psz_value = NULL;
if (psz_default && (psz_default[0] == '\0' || (psz_default[0] == ' ' && psz_default[1] == '\0')))
psz_default = NULL;
if( !psz_value && !psz_default )
continue;
......@@ -1468,7 +1491,7 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
}
switch( 0x80 + j )
{
case 0x80: /* Album/Title */
case cd_text_title:
if( i == 0 )
{
vlc_meta_SetAlbum( p_track, psz_value );
......@@ -1481,23 +1504,43 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
vlc_meta_SetAlbum( p_track, psz_default );
}
break;
case 0x81: /* Performer */
case cd_text_performer:
vlc_meta_SetArtist( p_track,
psz_value ? psz_value : psz_default );
if ( psz_value && i != 0 )
vlc_meta_SetAlbumArtist( p_track, psz_default );
break;
case 0x85: /* Messages */
case cd_text_message:
vlc_meta_SetDescription( p_track,
psz_value ? psz_value : psz_default );
break;
case 0x87: /* Genre */
case cd_text_genre:
vlc_meta_SetGenre( p_track,
psz_value ? psz_value : psz_default );
break;
case cd_text_songwriter:
// lyrics
vlc_meta_AddExtra( p_track, "AUTHOR",
psz_value ? psz_value : psz_default );
break;
case cd_text_composer:
// music
vlc_meta_AddExtra( p_track, "COMPOSER",
psz_value ? psz_value : psz_default );
break;
case cd_text_arrangers:
vlc_meta_AddExtra( p_track, "ARRANGER",
psz_value ? psz_value : psz_default );
break;
case cd_text_ean_isrc:
{
if ( i == 0 )
vlc_meta_AddExtra( p_track, "EAN/UPN", psz_default );
else if ( psz_value )
vlc_meta_AddExtra( p_track, "ISRC", psz_value );
}
/* FIXME unsupported:
* 0x82: songwriter
* 0x83: composer
* 0x84: arrenger
* 0x86: disc id */
* cd_text_discid */
}
}
}
......@@ -1531,15 +1574,13 @@ static int CdTextRead( vlc_object_t *p_object, const vcddev_t *p_vcddev,
{
VLC_UNUSED( p_object );
CDROM_READ_TOC_EX TOCEx;
memset(&TOCEx, 0, sizeof(TOCEx));
TOCEx.Format = CDROM_READ_TOC_EX_FORMAT_CDTEXT;
CDROM_READ_TOC_EX TOCEx = { .Format = CDROM_READ_TOC_EX_FORMAT_CDTEXT };
const int i_header_size = __MAX( 4, MINIMUM_CDROM_READ_TOC_EX_SIZE );
uint8_t header[i_header_size];
uint8_t header[4];
static_assert(ARRAY_SIZE(header) >= MINIMUM_CDROM_READ_TOC_EX_SIZE, "wrong header size");
DWORD i_read;
if( !DeviceIoControl( p_vcddev->h_device_handle, IOCTL_CDROM_READ_TOC_EX,
&TOCEx, sizeof(TOCEx), header, i_header_size, &i_read, 0 ) )
&TOCEx, sizeof(TOCEx), header, ARRAY_SIZE(header), &i_read, 0 ) )
return -1;
const int i_text = 2 + (header[0] << 8) + header[1];
......