File tree Expand file tree Collapse file tree 2 files changed +15
-4
lines changed Expand file tree Collapse file tree 2 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -564,16 +564,17 @@ class ConvertedStream : public AudioStreamX {
564
564
virtual int availableForWrite () { return p_stream->availableForWrite (); }
565
565
566
566
virtual size_t write (const uint8_t *buffer, size_t size) {
567
- p_converter->convert ((uint8_t *)buffer, size);
568
- return p_stream->write (buffer, size);
567
+ size_t result = p_converter->convert ((uint8_t *)buffer, size);
568
+ size_t result_written = p_stream->write (buffer, result);
569
+ return size * result_written / result;
569
570
}
570
571
571
572
size_t readBytes (uint8_t *data, size_t length) override {
572
573
size_t result; p_stream->readBytes (data, length);
573
- p_converter->convert (data, result);
574
- return result;
574
+ return p_converter->convert (data, result);
575
575
}
576
576
577
+
577
578
// / Returns the available bytes in the buffer: to be avoided
578
579
virtual int available () override {
579
580
return p_stream->available ();
Original file line number Diff line number Diff line change @@ -352,10 +352,20 @@ class ConverterToInternalDACFormat : public BaseConverter<T> {
352
352
template <typename T>
353
353
class ChannelReducer : public BaseConverter <T> {
354
354
public:
355
+ ChannelReducer () = default ;
356
+
355
357
ChannelReducer (int channelCountOfSource, int channelCountOfTarget=1 ){
356
358
from_channels = channelCountOfSource;
357
359
to_channels = channelCountOfTarget;
358
360
}
361
+
362
+ void setSourceChannels (int channelCountOfSource) {
363
+ from_channels = channelCountOfSource;
364
+ }
365
+
366
+ void setTargetChannels (int channelCountOfTarget) {
367
+ to_channels = channelCountOfTarget;
368
+ }
359
369
360
370
size_t convert (uint8_t *src, size_t size) {
361
371
int frame_count = size/(sizeof (T)*from_channels);
You can’t perform that action at this time.
0 commit comments