There's a "Render -> Render Audio" operator that pretty much calls into Audaspace functionality directly. This PR adds two new options in there, that boThere's a "Render -> Render Audio" operator that pretty much calls into Audaspace functionality directly. This PR adds two new options in there, that both feel like an oversight: - There's an option for AAC container, when someone wants to render into .aac file. Previously you could render AAC audio, but only in MKV (Matroska) container. This is a user request #131980. - When using MKV (Matroska) or Ogg container, it did not list Opus as an audio codec that can be used. This felt like an oversight; both the rest of Blender and Audaspace can handle that, jus the option was not spelled out in the RNA enums. Pull Request: https://projects.blender.org/blender/blender/pulls/132877th feel like an oversight: - There's an option for AAC container, when someone wants to render into `.aac` file. Previously you _could_ render AAC audio, but only in MKV (Matroska) container. This is a user request #131980. - When using MKV (Matroska) or Ogg container, it did not list Opus as an audio codec that can be used. This felt like an oversight; both the rest of Blender and Audaspace can handle that, jus the option was not spelled out in the RNA enums. Note however that without fix in #132872 the Matroska container continues to be useless in that it produces wrong result. Upstream Audaspace PR for the 2nd point: https://github.com/neXyon/audaspace/pull/47 (was just merged!) Pull Request: https://projects.blender.org/blender/blender/pulls/132877
91 lines
2.2 KiB
C++
91 lines
2.2 KiB
C++
/*******************************************************************************
|
|
* Copyright 2009-2016 Jörg Müller
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
******************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
/**
|
|
* @file IWriter.h
|
|
* @ingroup file
|
|
* Defines the IWriter interface as well as Container and Codec types.
|
|
*/
|
|
|
|
#include "respec/Specification.h"
|
|
|
|
AUD_NAMESPACE_BEGIN
|
|
|
|
/// Container formats for writers.
|
|
enum Container
|
|
{
|
|
CONTAINER_INVALID = 0,
|
|
CONTAINER_AC3,
|
|
CONTAINER_FLAC,
|
|
CONTAINER_MATROSKA,
|
|
CONTAINER_MP2,
|
|
CONTAINER_MP3,
|
|
CONTAINER_OGG,
|
|
CONTAINER_WAV,
|
|
CONTAINER_AAC
|
|
};
|
|
|
|
/// Audio codecs for writers.
|
|
enum Codec
|
|
{
|
|
CODEC_INVALID = 0,
|
|
CODEC_AAC,
|
|
CODEC_AC3,
|
|
CODEC_FLAC,
|
|
CODEC_MP2,
|
|
CODEC_MP3,
|
|
CODEC_PCM,
|
|
CODEC_VORBIS,
|
|
CODEC_OPUS
|
|
};
|
|
|
|
/**
|
|
* @interface IWriter
|
|
* This class represents a sound sink where audio data can be written to.
|
|
*/
|
|
class AUD_API IWriter
|
|
{
|
|
public:
|
|
/**
|
|
* Destroys the writer.
|
|
*/
|
|
virtual ~IWriter() {}
|
|
|
|
/**
|
|
* Returns how many samples have been written so far.
|
|
* \return The writing position as sample count. May be negative if unknown.
|
|
*/
|
|
virtual int getPosition() const=0;
|
|
|
|
/**
|
|
* Returns the specification of the audio data being written into the sink.
|
|
* \return The DeviceSpecs structure.
|
|
* \note Regardless of the format the input still has to be float!
|
|
*/
|
|
virtual DeviceSpecs getSpecs() const=0;
|
|
|
|
/**
|
|
* Request to write the next length samples out into the sink.
|
|
* \param length The count of samples to write.
|
|
* \param buffer The pointer to the buffer containing the data.
|
|
*/
|
|
virtual void write(unsigned int length, sample_t* buffer)=0;
|
|
};
|
|
|
|
AUD_NAMESPACE_END
|