Commit 4de16278 authored by Laurent Aimar's avatar Laurent Aimar
Browse files

Added a small vlc_fourcc_GetCodecAudio helper.

parent 57981acd
......@@ -333,6 +333,15 @@ VLC_EXPORT( vlc_fourcc_t, vlc_fourcc_GetCodec, ( int i_cat, vlc_fourcc_t i_fourc
*/
VLC_EXPORT( vlc_fourcc_t, vlc_fourcc_GetCodecFromString, ( int i_cat, const char * ) );
/**
* It convert the gives fourcc to an audio codec when possible.
*
* The fourcc converted are aflt, araw/pcm , twos, sowt. When an incompatible i_bits
* is detected, 0 is returned.
* The other fourcc goes through vlc_fourcc_GetCodec and i_bits is not checked.
*/
VLC_EXPORT( vlc_fourcc_t, vlc_fourcc_GetCodecAudio, ( vlc_fourcc_t i_fourcc, int i_bits ) );
/**
* It returns the description of the given fourcc or NULL if not found.
*
......
......@@ -453,6 +453,7 @@ vlc_event_send
__vlc_execve
vlc_fastmem_register
vlc_fourcc_GetCodec
vlc_fourcc_GetCodecAudio
vlc_fourcc_GetCodecFromString
vlc_fourcc_GetDescription
vlc_freeaddrinfo
......
......@@ -1195,6 +1195,78 @@ vlc_fourcc_t vlc_fourcc_GetCodecFromString( int i_cat, const char *psz_fourcc )
psz_fourcc[2], psz_fourcc[3] ) );
}
vlc_fourcc_t vlc_fourcc_GetCodecAudio( vlc_fourcc_t i_fourcc, int i_bits )
{
const int i_bytes = ( i_bits + 7 ) / 8;
if( i_fourcc == VLC_FOURCC( 'a', 'f', 'l', 't' ) )
{
switch( i_bytes )
{
case 4:
return VLC_CODEC_FL32;
case 8:
return VLC_CODEC_FL64;
default:
return 0;
}
}
else if( i_fourcc == VLC_FOURCC( 'a', 'r', 'a', 'w' ) ||
i_fourcc == VLC_FOURCC( 'p', 'c', 'm', ' ' ) )
{
switch( i_bytes )
{
case 1:
return VLC_CODEC_U8;
case 2:
return VLC_CODEC_S16L;
case 3:
return VLC_CODEC_S24L;
break;
case 4:
return VLC_CODEC_S32L;
default:
return 0;
}
}
else if( i_fourcc == VLC_FOURCC( 't', 'w', 'o', 's' ) )
{
switch( i_bytes )
{
case 1:
return VLC_CODEC_S8;
case 2:
return VLC_CODEC_S16B;
case 3:
return VLC_CODEC_S24B;
case 4:
return VLC_CODEC_S32B;
default:
return 0;
}
}
else if( i_fourcc == VLC_FOURCC( 's', 'o', 'w', 't' ) )
{
switch( i_bytes )
{
case 1:
return VLC_CODEC_S8;
case 2:
return VLC_CODEC_S16L;
case 3:
return VLC_CODEC_S24L;
case 4:
return VLC_CODEC_S32L;
default:
return 0;
}
}
else
{
return vlc_fourcc_GetCodec( AUDIO_ES, i_fourcc );
}
}
/* */
const char *vlc_fourcc_GetDescription( int i_cat, vlc_fourcc_t i_fourcc )
{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment