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 (7)
......@@ -75,7 +75,6 @@ typedef struct
date_t pts;
struct flac_header_info headerinfo;
size_t i_frame_size;
size_t i_last_frame_size;
uint16_t crc;
size_t i_buf;
......@@ -347,6 +346,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
p_sys->i_state = STATE_SYNC;
}
/* First Sync is now on bytestream head, offset == 0 */
block_SkipBytes(&p_sys->bytestream, p_sys->i_offset);
block_BytestreamFlush(&p_sys->bytestream);
p_sys->i_offset = 0;
......@@ -368,10 +368,12 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
return NULL; /* Need more data */
/* Check if frame is valid and get frame info */
int i_ret = FLAC_ParseSyncInfo(p_header, FLAC_HEADER_SIZE_MAX,
p_sys->b_stream_info ? &p_sys->stream_info : NULL,
flac_crc8, &p_sys->headerinfo);
if (!i_ret) {
const struct flac_stream_info *streaminfo =
p_sys->b_stream_info ? &p_sys->stream_info : NULL;
struct flac_header_info headerinfo;
int i_ret = FLAC_ParseSyncInfo(p_header, FLAC_HEADER_SIZE_MAX, streaminfo,
flac_crc8, &headerinfo);
if (!i_ret || !FLAC_CheckFrameInfo(streaminfo, &headerinfo)) {
msg_Dbg(p_dec, "emulated sync word");
block_SkipByte(&p_sys->bytestream);
p_sys->i_offset = 0;
......@@ -379,9 +381,9 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
break;
}
p_sys->headerinfo = headerinfo;
p_sys->i_state = STATE_NEXT_SYNC;
p_sys->i_offset = 1;
p_sys->i_frame_size = 0;
p_sys->i_offset = FLAC_FRAME_SIZE_MIN;
p_sys->crc = 0;
/* We have to read until next frame sync code to compute current frame size
......@@ -393,14 +395,19 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
case STATE_NEXT_SYNC:
{
/* First Sync is on bytestream head, offset will be the position
* of the next sync code candidate */
if(block_FindStartcodeFromOffset(&p_sys->bytestream, &p_sys->i_offset,
NULL, 2,
FLACStartcodeHelper,
FLACStartcodeMatcher) != VLC_SUCCESS)
{
if( pp_block == NULL ) /* EOF/Drain */
size_t i_remain = block_BytestreamRemaining( &p_sys->bytestream );
if( pp_block == NULL && i_remain > FLAC_FRAME_SIZE_MIN ) /* EOF/Drain */
{
p_sys->i_offset = block_BytestreamRemaining( &p_sys->bytestream );
/* There is no other synccode in the bytestream,
* we assume the end of our flac frame is end of bytestream */
p_sys->i_offset = i_remain;
p_sys->i_state = STATE_GET_DATA;
continue;
}
......@@ -413,12 +420,14 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
nextheader, FLAC_HEADER_SIZE_MAX))
return NULL; /* Need more data */
const struct flac_stream_info *streaminfo =
p_sys->b_stream_info ? &p_sys->stream_info : NULL;
struct flac_header_info dummy;
/* Check if frame is valid and get frame info */
if(FLAC_ParseSyncInfo(nextheader, FLAC_HEADER_SIZE_MAX,
p_sys->b_stream_info ? &p_sys->stream_info : NULL,
NULL, &dummy) == 0)
if(!FLAC_ParseSyncInfo(nextheader, FLAC_HEADER_SIZE_MAX, streaminfo, NULL, &dummy)||
!FLAC_CheckFrameInfo(streaminfo, &dummy))
{
/* Keep trying to find next sync point in bytestream */
p_sys->i_offset++;
continue;
}
......@@ -428,9 +437,11 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
}
case STATE_GET_DATA:
if( p_sys->i_offset < FLAC_FRAME_SIZE_MIN ||
( p_sys->b_stream_info &&
p_sys->stream_info.min_framesize > p_sys->i_offset ) )
/* i_offset is the next sync point candidate
* our frame_size is the offset from the first sync */
if( pp_block != NULL &&
p_sys->b_stream_info &&
p_sys->stream_info.min_framesize > p_sys->i_offset )
{
p_sys->i_offset += 1;
p_sys->i_state = STATE_NEXT_SYNC;
......@@ -441,9 +452,11 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
p_sys->stream_info.max_framesize < p_sys->i_offset )
{
/* Something went wrong, truncate stream head and restart */
msg_Warn(p_dec, "discarding bytes as we're over framesize %u, %zu",
p_sys->stream_info.max_framesize,
p_sys->i_offset);
block_SkipBytes( &p_sys->bytestream, FLAC_HEADER_SIZE_MAX + 2 );
block_BytestreamFlush( &p_sys->bytestream );
p_sys->i_frame_size = 0;
p_sys->crc = 0;
p_sys->i_offset = 0;
p_sys->i_state = STATE_NOSYNC;
......@@ -467,17 +480,13 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
return NULL;
}
/* Copy from previous sync point (frame_size) up to to current (offset) */
block_PeekOffsetBytes( &p_sys->bytestream, p_sys->i_frame_size,
&p_sys->p_buf[p_sys->i_frame_size],
p_sys->i_offset - p_sys->i_frame_size );
/* Copy from previous sync point up to to current (offset) */
block_PeekOffsetBytes( &p_sys->bytestream, 0, p_sys->p_buf, p_sys->i_offset );
/* update crc to include this data chunk */
for( size_t i = p_sys->i_frame_size; i < p_sys->i_offset - 2; i++ )
for( size_t i = 0; i < p_sys->i_offset - 2; i++ )
p_sys->crc = flac_crc16( p_sys->crc, p_sys->p_buf[i] );
p_sys->i_frame_size = p_sys->i_offset;
uint16_t stream_crc = GetWBE(&p_sys->p_buf[p_sys->i_offset - 2]);
if( stream_crc != p_sys->crc )
{
......@@ -492,10 +501,13 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
p_sys->i_state = STATE_SEND_DATA;
/* frame size between the two sync codes is now known */
p_sys->i_last_frame_size = p_sys->i_offset;
p_sys->i_buf = p_sys->i_offset;
/* clean */
block_SkipBytes( &p_sys->bytestream, p_sys->i_offset );
block_BytestreamFlush( &p_sys->bytestream );
p_sys->i_last_frame_size = p_sys->i_frame_size;
p_sys->i_offset = 0;
p_sys->crc = 0;
......@@ -521,7 +533,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
}
out = block_heap_Alloc( p_sys->p_buf, p_sys->i_frame_size );
out = block_heap_Alloc( p_sys->p_buf, p_sys->i_buf );
if( out )
{
out->i_dts = out->i_pts = date_Get( &p_sys->pts );
......@@ -539,7 +551,6 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
p_sys->i_buf = 0;
p_sys->p_buf = NULL;
p_sys->i_frame_size = 0;
p_sys->i_offset = 0;
p_sys->i_state = STATE_NOSYNC;
......@@ -571,7 +582,6 @@ static int Open(vlc_object_t *p_this)
p_sys->i_offset = 0;
p_sys->b_stream_info = false;
p_sys->i_last_frame_size = FLAC_FRAME_SIZE_MIN;
p_sys->i_frame_size = 0;
p_sys->headerinfo.i_pts = VLC_TICK_INVALID;
p_sys->i_buf = 0;
p_sys->p_buf = NULL;
......
......@@ -115,6 +115,24 @@ static inline int64_t read_utf8(const uint8_t *p_buf, unsigned i_buf, int *pi_re
return i_result;
}
static inline int FLAC_CheckFrameInfo(const struct flac_stream_info *stream_info,
const struct flac_header_info *h)
{
/* Sanity check using stream info header when possible */
if (stream_info)
{
if ((stream_info->min_blocksize != stream_info->max_blocksize &&
h->i_frame_length < stream_info->min_blocksize) ||
h->i_frame_length > stream_info->max_blocksize)
return 0;
if (h->i_bits_per_sample != stream_info->bits_per_sample)
return 0;
if (h->i_rate != stream_info->sample_rate)
return 0;
}
return 1;
}
/*****************************************************************************
* FLAC_ParseSyncInfo: parse FLAC sync info
* - stream_info can be NULL
......@@ -268,20 +286,12 @@ static inline int FLAC_ParseSyncInfo(const uint8_t *p_buf, unsigned i_buf,
pf_crc8(p_buf, i_header) != p_buf[i_header])
return 0;
/* Sanity check using stream info header when possible */
if (stream_info) {
if (blocksize < stream_info->min_blocksize ||
blocksize > stream_info->max_blocksize)
return 0;
if ((unsigned)bits_per_sample != stream_info->bits_per_sample)
return 0;
if (samplerate != stream_info->sample_rate)
return 0;
}
/* Compute from frame absolute time */
if ( (p_buf[1] & 0x01) == 0 ) /* Fixed blocksize stream / Frames */
h->i_pts = VLC_TICK_0 + vlc_tick_from_samples(blocksize * i_fsnumber, samplerate);
{
const unsigned fixedblocksize = stream_info ? stream_info->min_blocksize : blocksize;
h->i_pts = VLC_TICK_0 + vlc_tick_from_samples(fixedblocksize * i_fsnumber, samplerate);
}
else /* Variable blocksize stream / Samples */
h->i_pts = VLC_TICK_0 + vlc_tick_from_samples(i_fsnumber, samplerate);
......