Dynamic decoder configuration for live transcoding
A method and system for managing transcoding of data in a stream that includes identifying an input source change for the stream with a new input source type, and adding a decoder for the new input source type, the decoder configured to output for a respective encoder in a transcoder pipeline.
1 . A method for managing transcoding of data in a stream, the method comprising:
accessing a frame from a stream of decoded data decoded by a decoder;
determining that the stream has a second input source format, wherein the second input source format is different from a first input source format of one or more previous frames from the stream;
identifying that metadata associated with the second input source format required by an encoder of a transcoding pipeline is not present in the frame;
searching a cache for the metadata associated with the second input source format required by the encoder;
determining that the metadata required by the encoder cannot be extracted and provided to the encoder; and
responsive to determining that the metadata required by the encoder cannot be extracted and provided to the encoder:
creating one or more of: a synthesizing encoder and a synthesizing decoder, wherein the creating includes providing an input configuration to the one or more of the synthesizing encoder and the synthesizing decoder;
constructing, using the one or more of the synthesizing encoder and the synthesizing decoder, replacement metadata for the frame, wherein the replacement metadata for the encoder is not located in the cache;
transmitting the frame and the replacement metadata to the encoder; and
generating, by the encoder, an audio/video output stream in a target media format using the replacement metadata, wherein the target media format unifies the second input source format of the frame and the first input source format of the one or more previous frames to the target media format.
2 . The method of claim 1 , wherein constructing the replacement metadata comprises:
providing video data to the synthesizing encoder;
receiving an encoded output from the synthesizing encoder; and
providing the encoded output to the synthesizing decoder.
3 . The method of claim 1 , further comprising:
accessing an additional frame from the decoded data;
identifying additional metadata that matches characteristics of the additional frame;
appending the additional metadata to the additional frame; and
transmitting the additional frame and the additional metadata to the encoder.
4 . The method of claim 1 , further comprising:
accessing an additional frame from the decoded data;
responsive to determining that cached metadata for the additional frame is available:
adding the cached metadata to the additional frame; and
providing the additional frame and the cached metadata to the encoder.
5 . The method of claim 1 , further comprising:
identifying that the frame is an audio frame, wherein determining whether cached metadata for the audio frame is available is performed responsive to identifying that audio data in the audio frame is a raw format.
6 . The method of claim 1 , further comprising:
identifying an input source change for the stream with a new input source type; and
responsive to identifying the input source change, adding an additional decoder for the new input source type and decoding the frame with the additional decoder.
7 . The method of claim 1 , further comprising:
configuring a plurality of transcoder pipelines for the stream, each of the plurality of transcoder pipelines having a different output configuration and an additional encoder with a different configuration; and
adding a separate decoder for a new input source type to each of the plurality of transcoder pipelines, each separate decoder configured to output for input requirements of a respective additional encoder in a respective transcoder pipeline.
8 . A system comprising:
a non-transitory machine-readable medium having stored thereon program instructions; and
a processing device coupled to the non-transitory machine-readable medium, wherein when executing the program instructions, the processing device performs operations comprising:
accessing a frame from a stream of decoded data decoded by a decoder;
determining that the stream has a second input source format, wherein the second input source format is different from a first input source format of one or more previous frames from the stream;
identifying that metadata associated with the second input source format required by an encoder of a transcoding pipeline is not present in the frame;
searching a cache for the metadata associated with the second input source format required by the encoder;
determining that the metadata required by the encoder cannot be extracted and provided to the encoder; and
responsive to determining that the metadata required by the encoder cannot be extracted and provided to the encoder:
creating one or more of: a synthesizing encoder and a synthesizing decoder, wherein the creating includes providing an input configuration to the one or more of the synthesizing encoder and the synthesizing decoder;
constructing, using the one or more of the synthesizing encoder and the synthesizing decoder, replacement metadata for the frame, wherein the replacement metadata for the encoder is not located in the cache;
transmitting the frame and the replacement metadata to the encoder; and
generating, by the encoder, an audio/video output stream in a target media format using the replacement metadata, wherein the target media format unifies the second input source format of the frame and the first input source format of the one or more previous frames to the target media format.
9 . The system of claim 8 , wherein constructing the replacement metadata comprises:
providing video data to the synthesizing encoder;
receiving an encoded output from the synthesizing encoder; and
providing the encoded output to the synthesizing decoder.
10 . The system of claim 8 , wherein when executing the program instructions, the processing device performs operations comprising:
accessing an additional frame from the decoded data;
identifying additional metadata that matches characteristics of the additional frame;
appending the additional metadata to the additional frame; and
transmitting the additional frame and the additional metadata to the encoder.
11 . The system of claim 8 , wherein when executing the program instructions, the processing device performs operations comprising:
accessing an additional frame from the decoded data;
responsive to determining that cached metadata for the additional frame is available:
adding the cached metadata to the additional frame; and
providing the additional frame and the cached metadata to the encoder.
12 . The system of claim 8 , wherein when executing the program instructions, the processing device performs operations comprising:
identifying that the frame is an audio frame, wherein determining whether cached metadata for the audio frame is available is performed responsive to identifying that audio data in the audio frame is a raw format.
13 . The system of claim 8 , wherein when executing the program instructions, the processing device performs operations comprising:
identifying an input source change for a data stream with a new input source type; and
responsive to identifying the input source change, adding an additional decoder for the new input source type and decoding the frame with the additional decoder.
14 . The system of claim 8 , wherein when executing the program instructions, the processing device performs operations comprising:
configuring a plurality of transcoder pipelines for the stream, each of the plurality of transcoder pipelines having a different output configuration and an additional encoder with a different configuration; and
adding a separate decoder for a new input source type to each of the plurality of transcoder pipelines, each separate decoder configured to output for input requirements of a respective encoder in a respective additional transcoder pipeline.
15 . A non-transitory machine-readable storage medium that provides instructions that, if executed by a processor, will cause the processor to perform operations comprising:
accessing a frame from a stream of decoded data decoded by a decoder;
determining that the stream has a second input source format, wherein the second input source format is different from a first input source format of one or more previous frames from the stream;
identifying that metadata associated with the second input source format required by an encoder of a transcoding pipeline is not present in the frame;
searching a cache for the metadata associated with the second input source format required by the encoder;
determining that the metadata required by the encoder cannot be extracted and provided to the encoder; and
responsive to determining that the metadata required by the encoder cannot be extracted and provided to the encoder:
creating one or more of: a synthesizing encoder and a synthesizing decoder, wherein the creating includes providing an input configuration to the one or more of the synthesizing encoder and the synthesizing decoder;
constructing, using the one or more of the synthesizing encoder and the synthesizing decoder, replacement metadata for the frame, wherein the replacement metadata for the encoder is not located in the cache;
transmitting the frame and the replacement metadata to the encoder; and
generating, by the encoder, an audio/video output stream in a target media format using the replacement metadata, wherein the target media format unifies the second input source format of the frame and the first input source format of the one or more previous frames to the target media format.
16 . The non-transitory machine-readable storage medium of claim 15 , wherein constructing the replacement metadata comprises:
providing video data to the synthesizing encoder;
receiving an encoded output from the synthesizing encoder; and
providing the encoded output to the synthesizing decoder.
17 . The non-transitory machine-readable storage medium of claim 15 , wherein the instructions, if executed by the processor, will cause the processor to perform operations comprising:
accessing an additional frame from the decoded data;
identifying additional metadata that matches characteristics of the additional frame;
appending the additional metadata to the additional frame; and
transmitting the additional frame and the additional metadata to the encoder.
18 . The non-transitory machine-readable storage medium of claim 15 , wherein the instructions, if executed by the processor, will cause the processor to perform operations comprising:
accessing an additional frame from the decoded data;
responsive to determining that cached metadata for the additional frame is available:
adding the cached metadata to the additional frame; and
providing the additional frame and the cached metadata to the encoder.
19 . The non-transitory machine-readable storage medium of claim 15 , wherein the instructions, if executed by the processor, will cause the processor to perform operations comprising:
identifying that the frame is an audio frame, wherein determining whether cached metadata for the audio frame is available is performed responsive to identifying that audio data in the audio frame is a raw format.
20 . The non-transitory machine-readable storage medium of claim 15 , wherein the instructions, if executed by the processor, will cause the processor to perform operations comprising:
identifying an input source change for the stream with a new input source type; and
responsive to identifying the input source change, adding an additional decoder for the new input source type and decoding the frame with the additional decoder.