vlc | branch: master | Francois Cartegnie <[email protected]> | Mon May 29 19:48:19 2017 +0200| [0b9bd6f694b497d07a6007e198e61ecdd29091c2] | committer: Francois Cartegnie
meta: ID3: load replaygain into meta > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0b9bd6f694b497d07a6007e198e61ecdd29091c2 --- modules/meta_engine/ID3Meta.h | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/modules/meta_engine/ID3Meta.h b/modules/meta_engine/ID3Meta.h index d35e370919..90aa24f7b9 100644 --- a/modules/meta_engine/ID3Meta.h +++ b/modules/meta_engine/ID3Meta.h @@ -100,7 +100,37 @@ static bool ID3HandleTag( const uint8_t *p_buf, size_t i_buf, uint32_t i_tag, vlc_meta_t *p_meta, bool *pb_updated ) { - if( ((const char *) &i_tag)[0] == 'T' ) + if( i_tag == VLC_FOURCC('W', 'X', 'X', 'X') ) + { + return ID3LinkFrameTagHandler( p_buf, i_buf, p_meta, pb_updated ); + } + else if( i_tag == VLC_FOURCC('T', 'X', 'X', 'X') ) + { + char *psz_key_alloc; + const char *psz_key = ID3TextConvert( p_buf, i_buf, &psz_key_alloc ); + if( psz_key ) + { + const size_t i_len = strlen( psz_key ) + 2; + if( i_len < i_buf ) + { + /* Only set those which are known as non binary */ + if( !strncasecmp( psz_key, "REPLAYGAIN_", 11 ) ) + { + char *psz_val_alloc; + const char *psz_val = ID3TextConv( &p_buf[i_len], i_buf - i_len, + p_buf[0], &psz_val_alloc ); + if( psz_val ) + { + vlc_meta_AddExtra( p_meta, psz_key, psz_val ); + free( psz_val_alloc ); + } + } + } + free( psz_key_alloc ); + return (vlc_meta_GetExtraCount( p_meta ) > 0); + } + } + else if ( ((const char *) &i_tag)[0] == 'T' ) { for( size_t i=0; i<ARRAY_SIZE(ID3_tag_to_metatype); i++ ) { @@ -111,10 +141,6 @@ static bool ID3HandleTag( const uint8_t *p_buf, size_t i_buf, p_meta, pb_updated ); } } - else if( i_tag == VLC_FOURCC('W', 'X', 'X', 'X') ) - { - return ID3LinkFrameTagHandler( p_buf, i_buf, p_meta, pb_updated ); - } return false; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
