annotate foosdk/sdk/foobar2000/SDK/audioEncoder.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 namespace fb2k {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 //! \since 2.0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 struct audioEncoderSetup_t {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 audio_chunk::spec_t spec;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 uint32_t bps;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 double durationHint; // Optional; if > 0 signals the encoder expected PCM stream length in advance to avoid rewriting headers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 //! \since 2.0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 class audioEncoderInstance : public service_base {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 FB2K_MAKE_SERVICE_INTERFACE( audioEncoderInstance, service_base);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 virtual void addChunk( const audio_chunk & chunk, abort_callback & aborter ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 virtual void finalize( abort_callback & aborter ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 //! \since 2.0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 class audioEncoder : public service_base {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT( audioEncoder );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 virtual const char * formatExtension() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 virtual audioEncoderInstance::ptr open( file::ptr outFile, audioEncoderSetup_t const & spec, abort_callback & aborter ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 static audioEncoderInstance::ptr g_open( const char * targetPath, file::ptr fileHint, audioEncoderSetup_t const & spec, abort_callback & aborter );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 }