[vlc-devel] Video format settings

Francesco, Cuzzocrea francesco at bltitalia.com
Tue Jun 6 18:10:32 CEST 2017


I wrote this post on the forum, but I think is better to post it here.

I'm writing a demuxer module in order to manage custom file format. 
Output stream 0 is ES_VIDEO raw format UYVY (module makes decompression)
1920x1080 and output stream 1 is audio PCM 4 channels 16 bit 48KHz. In 
the open function I insert 2 tracks, video and audio (I used as 
reference the
avi.c module  and the rawvid.c one):

/* Allocate video track */
blt_track_t *tkv = calloc( 1, sizeof( blt_track_t ) );
if( unlikely( !tkv ) )
goto _demux_error;
msg_Dbg(obj,"############## Allocated video track");

es_format_t fmtv; // Video elementary stream

tkv->b_eof = false;
tkv->b_activated = true;
tkv->i_rate = 25; // 25 frames per seconds
tkv->i_scale = 1;
tkv->i_samplesize = -1;
tkv->cframe = 0;
tkv->i_cat = VIDEO_ES;
tkv->i_codec = VLC_CODEC_UYVY;
es_format_Init( &fmtv, VIDEO_ES, tkv->i_codec );
tkv->i_width_bytes = 1920*2;
fmtv.i_original_fourcc = VLC_CODEC_JPEG2000; // Original video is JPEG2000
fmtv.i_id = 0;
tkv->i_samplesize = 1920*1080*2;
fmtv.video.i_chroma = vlc_fourcc_GetCodec( VIDEO_ES,tkv->i_codec );
fmtv.video.i_width = 1920;
fmtv.video.i_height = 1080;
fmtv.video.i_visible_width = 1920;
fmtv.video.i_visible_height = 1080;
fmtv.video.i_bits_per_pixel = 16; // 8 bits for Luma and 8 for Chroma
fmtv.video.i_frame_rate =25;
fmtv.video.i_frame_rate_base = tkv->i_scale;
fmtv.video.i_sar_num = 1;
fmtv.video.i_sar_den = 1;

tkv->i_dv_audio_rate = 0;
fmtv.psz_description = strdup("it");
tkv->p_es = es_out_Add( dm->out, &fmtv );
TAB_APPEND( sys->i_track, sys->track, tkv );
msg_Dbg(obj,"############## Appended video track");

/* Allocate audio track */
blt_track_t *tka = calloc( 1, sizeof( blt_track_t ) );
if( unlikely( !tka ) )
goto _demux_error;

msg_Dbg(obj,"############## Allocated audio track");
es_format_t fmta;

tka->b_eof = false;
tka->b_activated = true;
tka->i_rate = 48000;
tka->i_scale =1;
tka->i_samplesize = 4*2*1920; // 4 channels, 2 Bytes per channel (16 
bit), 1920 sample per frame
tka->i_codec = WAVE_FORMAT_PCM;
tka->cframe = 0;

tka->i_cat = AUDIO_ES;
es_format_Init( &fmta, AUDIO_ES, tka->i_codec );
fmta.i_id = 1;
fmta.audio.i_channels = 4;
fmta.audio.i_rate = 48000;
fmta.i_bitrate = 48000*16;
fmta.audio.i_blockalign = 4;
fmta.audio.i_bitspersample = 16;
fmta.b_packetized = false;

tka->i_dv_audio_rate = 48000;
fmta.psz_description = strdup("it");
tka->p_es = es_out_Add( dm->out, &fmta );
TAB_APPEND( sys->i_track, sys->track, tka );
msg_Dbg(obj,"############## Appended audio track");

After compiling vlc and launching it (./vlc) I load the clip named 
"clip2A_1s.blt" and the result is :

VLC could not decode the format " " (No description for this codec)

I didn't understood where I should insert codec description; I think I 
did it. Track has its correct codec fourcc and the same is for video
elementary stream (es_format_t fmtv; in the code). Moreover in the 
terminal windows appears a message "Unsupported bits
per sample". My output format is 4:2:2 YUV so I set bits per sample to 
16 (8 bits for Luma and 8 for Chroma).
Here is the  message windows (set to debug):

core debug: adding item `clip2A_1s.blt' ( 
file:///home/alfredo/Videos/clip2A_1s.blt )
core debug: Creating an input for 'clip2A_1s.blt'
core debug: processing request item: clip2A_1s.blt, node: null, skip: 0
core debug: rebuilding array of current - root Playlist
core debug: rebuild done - 1 items, index 0
core debug: starting playback of the new playlist item
core debug: resyncing on clip2A_1s.blt
core debug: clip2A_1s.blt is at 0
core debug: creating new input thread
core debug: Creating an input for 'clip2A_1s.blt'
core debug: requesting art for clip2A_1s.blt
core debug: using timeshift granularity of 50 MiB, in path '/tmp'
core debug: `file:///home/alfredo/Videos/clip2A_1s.blt' gives access 
`file' demux `' path `/home/alfredo/Videos/clip2A_1s.blt'
core debug: specified demux `any'
core debug: creating demux: access='file' demux='any' 
location='/home/alfredo/Videos/clip2A_1s.blt' 
file='/home/alfredo/Videos/clip2A_1s.blt'
core debug: looking for meta fetcher module matching "any": 1 candidates
core debug: looking for access_demux module matching "file": 21 candidates
core debug: no access_demux modules matched
core debug: creating access 'file' 
location='/home/alfredo/Videos/clip2A_1s.blt', 
path='/home/alfredo/Videos/clip2A_1s.blt'
core debug: looking for access module matching "file": 23 candidates
filesystem debug: opening file `/home/alfredo/Videos/clip2A_1s.blt'
core debug: using access module "filesystem"
core debug: Using stream method for AStream*
core debug: starting pre-buffering
core debug: received first data after 0 ms
core debug: pre-buffering done 1024 bytes in 0s - 250000 KiB/s
core debug: looking for stream_filter module matching "any": 9 candidates
core debug: no stream_filter modules matched
core debug: looking for stream_filter module matching "record": 9 candidates
core debug: using stream_filter module "record"
core debug: creating demux: access='file' demux='any' 
location='/home/alfredo/Videos/clip2A_1s.blt' 
file='/home/alfredo/Videos/clip2A_1s.blt'
core debug: looking for demux module matching "any": 68 candidates
lua debug: Trying Lua scripts in 
/home/alfredo/.local/share/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.luac
blt_import debug: ################## demux Open
blt_import debug: ################## Found value any
blt_import debug: ################## Found access value file
blt_import debug: ################## Found location value 
/home/alfredo/Videos/clip2A_1s.blt
blt_import debug: ############## Cliptab allocated
blt_import debug: BLT File found : Frames 26, audio channels 4
blt_import debug: ############## Allocated video track
core debug: selecting program id=0
blt_import debug: ############## Appended video track
blt_import debug: ############## Allocated audio track
blt_import debug: ############## Appended audio track
core debug: using demux module "blt_import"
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
qt4 debug: IM: Setting an input
core debug: looking for a subtitle file in /home/alfredo/Videos/
core debug: looking for decoder module matching "any": 43 candidates
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.luac
core debug: no meta fetcher modules matched
core debug: searching art for clip2A_1s.blt
core debug: looking for art finder module matching "any": 2 candidates
lua debug: Trying Lua scripts in /home/alfredo/.local/share/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.luac
core debug: meta ok for (null), need to fetch art
core debug: looking for meta fetcher module matching "any": 1 candidates
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.luac
lua debug: Trying Lua scripts in 
/home/alfredo/.local/share/vlc/lua/meta/fetcher
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.lua
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.luac
core debug: no meta fetcher modules matched
core debug: searching art for clip2A_1s.blt
core debug: looking for art finder module matching "any": 2 candidates
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.lua
lua debug: Trying Lua scripts in /home/alfredo/.local/share/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.luac
core debug: no art finder modules matched
core debug: looking for meta fetcher module matching "any": 1 candidates
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.lua
lua debug: Trying Lua scripts in 
/home/alfredo/.local/share/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.luac
core debug: using meta fetcher module "lua"
core debug: removing module "lua"
core debug: searching art for clip2A_1s.blt
core debug: looking for art finder module matching "any": 2 candidates
core debug: using decoder module "rawvideo"
core debug: looking for decoder module matching "any": 43 candidates
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.lua
avcodec debug: CPU flags: 0x0007d3db
lua debug: Trying Lua scripts in /home/alfredo/.local/share/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.lua
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.luac
avcodec debug: trying to use direct rendering
avcodec debug: allowing 4 thread(s) for decoding
avcodec error: cannot open codec (Microsoft RLE Video)
core debug: no decoder modules matched
core debug: looking for packetizer module matching "any": 23 candidates
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.luac
lua debug: skipping script (unmatched scope) 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.luac
core debug: no art finder modules matched
core debug: looking for meta fetcher module matching "any": 1 candidates
core debug: using packetizer module "packetizer_copy"
core error: Codec ` ' (No description for this codec) is not supported.
core debug: killing decoder fourcc ` ', 0 PES in FIFO
core debug: removing module "packetizer_copy"
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
core debug: looking for meta reader module matching "any": 2 candidates
lua debug: Trying Lua scripts in 
/home/alfredo/.local/share/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/fetcher
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/fetcher/tvrage.lua
lua debug: Trying Lua scripts in 
/home/alfredo/.local/share/vlc/lua/meta/reader
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/reader
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/reader
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/reader/filename.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.lua
core debug: using meta fetcher module "lua"
core debug: removing module "lua"
core debug: searching art for clip2A_1s.blt
core debug: looking for art finder module matching "any": 2 candidates
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/reader/filename.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.luac
lua debug: Trying Lua scripts in /home/alfredo/.local/share/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/src/.libs/vlc/lua/meta/art
lua debug: Trying Lua scripts in 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.lua
core debug: no meta reader modules matched
core debug: `file:///home/alfredo/Videos/clip2A_1s.blt' successfully opened
blt_import debug: ############## Blt_demux_seekable
core debug: Buffering 0%
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/00_musicbrainz.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.luac
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Blt_demux_seekable
core debug: Buffering 100%
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/01_googleimage.luac
blt_import debug: ############## Blt_demux_seekable
core debug: Stream buffering done (80 ms in 2 ms)
core debug: Decoder wait done in 0 ms
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.luac
core debug: no art finder modules matched
core debug: art not found for clip2A_1s.blt
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/02_frenchtv.luac
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.lua
lua debug: Trying Lua playlist script 
/home/alfredo/vlc_versions/vlc-2.2.6/share/lua/meta/art/03_lastfm.luac
core debug: no art finder modules matched
core debug: art not found for clip2A_1s.blt
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Blt_demux_seekable
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Called BLTControl
blt_import debug: ############## Blt_demux_seekable
core debug: EOF reached
core debug: finished input
core debug: removing module "rawvideo"
core debug: killing decoder fourcc `UYVY', 0 PES in FIFO
core debug: removing module "blt_import"
core debug: removing module "record"
core debug: removing module "filesystem"
core debug: Program doesn't contain anymore ES
core debug: dead input
core debug: changing item without a request (current 0/1)
core debug: nothing to play
qt4 debug: IM: Deleting the input

Why attempt to use Microsoft RLE Video If I set raw video UYVY ?
Where I'm wrong ?
I'm on Linux Debian 8 (jessie) with Gnome 3.14.1
Francesco


More information about the vlc-devel mailing list