Interface TrackOutput

    • Field Detail

      • SAMPLE_DATA_PART_MAIN

        static final int SAMPLE_DATA_PART_MAIN
        Main media sample data.
        See Also:
        Constant Field Values
      • SAMPLE_DATA_PART_ENCRYPTION

        static final int SAMPLE_DATA_PART_ENCRYPTION
        Sample encryption data.

        The format for encryption information is:

        • (1 byte) encryption_signal_byte: Most significant bit signals whether the encryption data contains subsample encryption data. The remaining bits contain initialization_vector_size.
        • (initialization_vector_size bytes) Initialization vector.
        • If subsample encryption data is present, as per encryption_signal_byte, the encryption data also contains:
          • (2 bytes) subsample_encryption_data_length.
          • (subsample_encryption_data_length * 6 bytes) Subsample encryption data (repeated subsample_encryption_data_length times:
            • (2 bytes) Size of a clear section in sample.
            • (4 bytes) Size of an encryption section in sample.
        See Also:
        Constant Field Values
      • SAMPLE_DATA_PART_SUPPLEMENTAL

        static final int SAMPLE_DATA_PART_SUPPLEMENTAL
        Sample supplemental data.

        If a sample contains supplemental data, the format of the entire sample data will be:

        • If the sample has the C.BUFFER_FLAG_ENCRYPTED flag set, all encryption information.
        • (4 bytes) sample_data_size: The size of the actual sample data, not including supplemental data or encryption information.
        • (sample_data_size bytes): The media sample data.
        • (remaining bytes) The supplemental data.
        See Also:
        Constant Field Values
    • Method Detail

      • format

        void format​(Format format)
        Called when the Format of the track has been extracted from the stream.
        Parameters:
        format - The extracted Format.
      • sampleData

        int sampleData​(DataReader input,
                       int length,
                       boolean allowEndOfInput,
                       @SampleDataPart
                       int sampleDataPart)
                throws IOException
        Called to write sample data to the output.
        Parameters:
        input - A DataReader from which to read the sample data.
        length - The maximum length to read from the input.
        allowEndOfInput - True if encountering the end of the input having read no data is allowed, and should result in C.RESULT_END_OF_INPUT being returned. False if it should be considered an error, causing an EOFException to be thrown.
        sampleDataPart - The part of the sample data to which this call corresponds.
        Returns:
        The number of bytes appended.
        Throws:
        IOException - If an error occurred reading from the input.
      • sampleData

        void sampleData​(ParsableByteArray data,
                        int length,
                        @SampleDataPart
                        int sampleDataPart)
        Called to write sample data to the output.
        Parameters:
        data - A ParsableByteArray from which to read the sample data.
        length - The number of bytes to read, starting from data.getPosition().
        sampleDataPart - The part of the sample data to which this call corresponds.
      • sampleMetadata

        void sampleMetadata​(long timeUs,
                            @BufferFlags
                            int flags,
                            int size,
                            int offset,
                            @Nullable
                            TrackOutput.CryptoData cryptoData)
        Called when metadata associated with a sample has been extracted from the stream.

        The corresponding sample data will have already been passed to the output via calls to sampleData(DataReader, int, boolean) or sampleData(ParsableByteArray, int).

        Parameters:
        timeUs - The media timestamp associated with the sample, in microseconds.
        flags - Flags associated with the sample. See C.BUFFER_FLAG_*.
        size - The size of the sample data, in bytes.
        offset - The number of bytes that have been passed to sampleData(DataReader, int, boolean) or sampleData(ParsableByteArray, int) since the last byte belonging to the sample whose metadata is being passed.
        cryptoData - The encryption data required to decrypt the sample. May be null.