avcodec/mlp_parse: move TrueHD channel layout and sample rate related code to the header
It will be needed by the next commit. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							parent
							
								
									45cefca1e7
								
							
						
					
					
						commit
						21d7eeafc1
					
				@ -60,56 +60,6 @@ static const uint64_t mlp_layout[32] = {
 | 
				
			|||||||
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 | 
					    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const uint8_t thd_chancount[13] = {
 | 
					 | 
				
			||||||
//  LR    C   LFE  LRs LRvh  LRc LRrs  Cs   Ts  LRsd  LRw  Cvh  LFE2
 | 
					 | 
				
			||||||
     2,   1,   1,   2,   2,   2,   2,   1,   1,   2,   2,   1,   1
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const uint64_t thd_layout[13] = {
 | 
					 | 
				
			||||||
    AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT,                     // LR
 | 
					 | 
				
			||||||
    AV_CH_FRONT_CENTER,                                     // C
 | 
					 | 
				
			||||||
    AV_CH_LOW_FREQUENCY,                                    // LFE
 | 
					 | 
				
			||||||
    AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT,                       // LRs
 | 
					 | 
				
			||||||
    AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT,             // LRvh
 | 
					 | 
				
			||||||
    AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER, // LRc
 | 
					 | 
				
			||||||
    AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT,                       // LRrs
 | 
					 | 
				
			||||||
    AV_CH_BACK_CENTER,                                      // Cs
 | 
					 | 
				
			||||||
    AV_CH_TOP_CENTER,                                       // Ts
 | 
					 | 
				
			||||||
    AV_CH_SURROUND_DIRECT_LEFT|AV_CH_SURROUND_DIRECT_RIGHT, // LRsd
 | 
					 | 
				
			||||||
    AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT,                       // LRw
 | 
					 | 
				
			||||||
    AV_CH_TOP_FRONT_CENTER,                                 // Cvh
 | 
					 | 
				
			||||||
    AV_CH_LOW_FREQUENCY_2,                                  // LFE2
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int mlp_samplerate(int in)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (in == 0xF)
 | 
					 | 
				
			||||||
        return 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return (in & 8 ? 44100 : 48000) << (in & 7) ;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int truehd_channels(int chanmap)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int channels = 0, i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (i = 0; i < 13; i++)
 | 
					 | 
				
			||||||
        channels += thd_chancount[i] * ((chanmap >> i) & 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return channels;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static uint64_t truehd_layout(int chanmap)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int i;
 | 
					 | 
				
			||||||
    uint64_t layout = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (i = 0; i < 13; i++)
 | 
					 | 
				
			||||||
        layout |= thd_layout[i] * ((chanmap >> i) & 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return layout;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int mlp_get_major_sync_size(const uint8_t * buf, int bufsize)
 | 
					static int mlp_get_major_sync_size(const uint8_t * buf, int bufsize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int has_extension, extensions = 0;
 | 
					    int has_extension, extensions = 0;
 | 
				
			||||||
 | 
				
			|||||||
@ -56,6 +56,55 @@ typedef struct MLPHeaderInfo
 | 
				
			|||||||
    int num_substreams;                     ///< Number of substreams within stream
 | 
					    int num_substreams;                     ///< Number of substreams within stream
 | 
				
			||||||
} MLPHeaderInfo;
 | 
					} MLPHeaderInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint8_t thd_chancount[13] = {
 | 
				
			||||||
 | 
					//  LR    C   LFE  LRs LRvh  LRc LRrs  Cs   Ts  LRsd  LRw  Cvh  LFE2
 | 
				
			||||||
 | 
					     2,   1,   1,   2,   2,   2,   2,   1,   1,   2,   2,   1,   1
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint64_t thd_layout[13] = {
 | 
				
			||||||
 | 
					    AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT,                     // LR
 | 
				
			||||||
 | 
					    AV_CH_FRONT_CENTER,                                     // C
 | 
				
			||||||
 | 
					    AV_CH_LOW_FREQUENCY,                                    // LFE
 | 
				
			||||||
 | 
					    AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT,                       // LRs
 | 
				
			||||||
 | 
					    AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT,             // LRvh
 | 
				
			||||||
 | 
					    AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER, // LRc
 | 
				
			||||||
 | 
					    AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT,                       // LRrs
 | 
				
			||||||
 | 
					    AV_CH_BACK_CENTER,                                      // Cs
 | 
				
			||||||
 | 
					    AV_CH_TOP_CENTER,                                       // Ts
 | 
				
			||||||
 | 
					    AV_CH_SURROUND_DIRECT_LEFT|AV_CH_SURROUND_DIRECT_RIGHT, // LRsd
 | 
				
			||||||
 | 
					    AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT,                       // LRw
 | 
				
			||||||
 | 
					    AV_CH_TOP_FRONT_CENTER,                                 // Cvh
 | 
				
			||||||
 | 
					    AV_CH_LOW_FREQUENCY_2,                                  // LFE2
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int mlp_samplerate(int in)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (in == 0xF)
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return (in & 8 ? 44100 : 48000) << (in & 7) ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int truehd_channels(int chanmap)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int channels = 0, i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (i = 0; i < 13; i++)
 | 
				
			||||||
 | 
					        channels += thd_chancount[i] * ((chanmap >> i) & 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return channels;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline uint64_t truehd_layout(int chanmap)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int i;
 | 
				
			||||||
 | 
					    uint64_t layout = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (i = 0; i < 13; i++)
 | 
				
			||||||
 | 
					        layout |= thd_layout[i] * ((chanmap >> i) & 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return layout;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb);
 | 
					int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user