Merge pull request #4599 from wwylele/bitfield-endian

Common: make BitField endianness-aware
This commit is contained in:
Weiyi Wang 2019-02-01 10:48:56 -05:00 committed by GitHub
commit f78512d6de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 306 additions and 157 deletions

View file

@ -126,29 +126,29 @@ struct SourceConfiguration {
union {
u32_le dirty_raw;
BitField<0, 1, u32_le> format_dirty;
BitField<1, 1, u32_le> mono_or_stereo_dirty;
BitField<2, 1, u32_le> adpcm_coefficients_dirty;
BitField<0, 1, u32> format_dirty;
BitField<1, 1, u32> mono_or_stereo_dirty;
BitField<2, 1, u32> adpcm_coefficients_dirty;
/// Tends to be set when a looped buffer is queued.
BitField<3, 1, u32_le> partial_embedded_buffer_dirty;
BitField<4, 1, u32_le> partial_reset_flag;
BitField<3, 1, u32> partial_embedded_buffer_dirty;
BitField<4, 1, u32> partial_reset_flag;
BitField<16, 1, u32_le> enable_dirty;
BitField<17, 1, u32_le> interpolation_dirty;
BitField<18, 1, u32_le> rate_multiplier_dirty;
BitField<19, 1, u32_le> buffer_queue_dirty;
BitField<20, 1, u32_le> loop_related_dirty;
BitField<16, 1, u32> enable_dirty;
BitField<17, 1, u32> interpolation_dirty;
BitField<18, 1, u32> rate_multiplier_dirty;
BitField<19, 1, u32> buffer_queue_dirty;
BitField<20, 1, u32> loop_related_dirty;
/// Tends to also be set when embedded buffer is updated.
BitField<21, 1, u32_le> play_position_dirty;
BitField<22, 1, u32_le> filters_enabled_dirty;
BitField<23, 1, u32_le> simple_filter_dirty;
BitField<24, 1, u32_le> biquad_filter_dirty;
BitField<25, 1, u32_le> gain_0_dirty;
BitField<26, 1, u32_le> gain_1_dirty;
BitField<27, 1, u32_le> gain_2_dirty;
BitField<28, 1, u32_le> sync_dirty;
BitField<29, 1, u32_le> reset_flag;
BitField<30, 1, u32_le> embedded_buffer_dirty;
BitField<21, 1, u32> play_position_dirty;
BitField<22, 1, u32> filters_enabled_dirty;
BitField<23, 1, u32> simple_filter_dirty;
BitField<24, 1, u32> biquad_filter_dirty;
BitField<25, 1, u32> gain_0_dirty;
BitField<26, 1, u32> gain_1_dirty;
BitField<27, 1, u32> gain_2_dirty;
BitField<28, 1, u32> sync_dirty;
BitField<29, 1, u32> reset_flag;
BitField<30, 1, u32> embedded_buffer_dirty;
};
// Gain control
@ -206,8 +206,8 @@ struct SourceConfiguration {
union {
u16_le filters_enabled;
BitField<0, 1, u16_le> simple_filter_enabled;
BitField<1, 1, u16_le> biquad_filter_enabled;
BitField<0, 1, u16> simple_filter_enabled;
BitField<1, 1, u16> biquad_filter_enabled;
};
SimpleFilter simple_filter;
@ -227,8 +227,8 @@ struct SourceConfiguration {
/// ADPCM Predictor (4 bits) and Scale (4 bits)
union {
u16_le adpcm_ps;
BitField<0, 4, u16_le> adpcm_scale;
BitField<4, 4, u16_le> adpcm_predictor;
BitField<0, 4, u16> adpcm_scale;
BitField<4, 4, u16> adpcm_predictor;
};
/// ADPCM Historical Samples (y[n-1] and y[n-2])
@ -285,14 +285,14 @@ struct SourceConfiguration {
u16_le flags1_raw;
BitField<0, 2, MonoOrStereo> mono_or_stereo;
BitField<2, 2, Format> format;
BitField<5, 1, u16_le> fade_in;
BitField<5, 1, u16> fade_in;
};
/// ADPCM Predictor (4 bit) and Scale (4 bit)
union {
u16_le adpcm_ps;
BitField<0, 4, u16_le> adpcm_scale;
BitField<4, 4, u16_le> adpcm_predictor;
BitField<0, 4, u16> adpcm_scale;
BitField<4, 4, u16> adpcm_predictor;
};
/// ADPCM Historical Samples (y[n-1] and y[n-2])
@ -300,8 +300,8 @@ struct SourceConfiguration {
union {
u16_le flags2_raw;
BitField<0, 1, u16_le> adpcm_dirty; ///< Has the ADPCM info above been changed?
BitField<1, 1, u16_le> is_looping; ///< Is this a looping buffer?
BitField<0, 1, u16> adpcm_dirty; ///< Has the ADPCM info above been changed?
BitField<1, 1, u16> is_looping; ///< Is this a looping buffer?
};
/// Buffer id of embedded buffer (used as a buffer id in SourceStatus to reference this
@ -334,20 +334,20 @@ struct DspConfiguration {
union {
u32_le dirty_raw;
BitField<8, 1, u32_le> mixer1_enabled_dirty;
BitField<9, 1, u32_le> mixer2_enabled_dirty;
BitField<10, 1, u32_le> delay_effect_0_dirty;
BitField<11, 1, u32_le> delay_effect_1_dirty;
BitField<12, 1, u32_le> reverb_effect_0_dirty;
BitField<13, 1, u32_le> reverb_effect_1_dirty;
BitField<8, 1, u32> mixer1_enabled_dirty;
BitField<9, 1, u32> mixer2_enabled_dirty;
BitField<10, 1, u32> delay_effect_0_dirty;
BitField<11, 1, u32> delay_effect_1_dirty;
BitField<12, 1, u32> reverb_effect_0_dirty;
BitField<13, 1, u32> reverb_effect_1_dirty;
BitField<16, 1, u32_le> volume_0_dirty;
BitField<16, 1, u32> volume_0_dirty;
BitField<24, 1, u32_le> volume_1_dirty;
BitField<25, 1, u32_le> volume_2_dirty;
BitField<26, 1, u32_le> output_format_dirty;
BitField<27, 1, u32_le> limiter_enabled_dirty;
BitField<28, 1, u32_le> headphones_connected_dirty;
BitField<24, 1, u32> volume_1_dirty;
BitField<25, 1, u32> volume_2_dirty;
BitField<26, 1, u32> output_format_dirty;
BitField<27, 1, u32> limiter_enabled_dirty;
BitField<28, 1, u32> headphones_connected_dirty;
};
/// The DSP has three intermediate audio mixers. This controls the volume level (0.0-1.0) for
@ -384,9 +384,9 @@ struct DspConfiguration {
/// The DSP clears these each audio frame.
union {
u16_le dirty_raw;
BitField<0, 1, u16_le> enable_dirty;
BitField<1, 1, u16_le> work_buffer_address_dirty;
BitField<2, 1, u16_le> other_dirty; ///< Set when anything else has been changed
BitField<0, 1, u16> enable_dirty;
BitField<1, 1, u16> work_buffer_address_dirty;
BitField<2, 1, u16> other_dirty; ///< Set when anything else has been changed
};
u16_le enable;