mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
a1dff513ce
Move Annex B sample formatting from the demuxer to a static utility function. Return NAL unit syntax samples by default, since more platforms prefer to unpack the AVCC data themselves. Pass the raw AVCC payload to ffmpeg through its extradata field. It can handle either sample format, expecting one or the other depending on whether extradata is present. Pass input samples through a new WMFOutputSource::Input method. Save a reference to the VideoDecoderConfig in the WFMVideoOutputSource and use it to convert samples to Annex B before forwarding them to the MFTDecoder.
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef __FFmpegDataDecoder_h__
|
|
#define __FFmpegDataDecoder_h__
|
|
|
|
#include "FFmpegDecoderModule.h"
|
|
#include "FFmpegRuntimeLinker.h"
|
|
#include "FFmpegCompat.h"
|
|
#include "mozilla/Vector.h"
|
|
|
|
namespace mozilla
|
|
{
|
|
|
|
class FFmpegDataDecoder : public MediaDataDecoder
|
|
{
|
|
public:
|
|
FFmpegDataDecoder(MediaTaskQueue* aTaskQueue, AVCodecID aCodecID);
|
|
virtual ~FFmpegDataDecoder();
|
|
|
|
static bool Link();
|
|
|
|
virtual nsresult Init() MOZ_OVERRIDE;
|
|
virtual nsresult Input(mp4_demuxer::MP4Sample* aSample) = 0;
|
|
virtual nsresult Flush() MOZ_OVERRIDE;
|
|
virtual nsresult Drain() = 0;
|
|
virtual nsresult Shutdown() MOZ_OVERRIDE;
|
|
|
|
protected:
|
|
MediaTaskQueue* mTaskQueue;
|
|
AVCodecContext mCodecContext;
|
|
Vector<uint8_t> mExtraData;
|
|
|
|
private:
|
|
static bool sFFmpegInitDone;
|
|
|
|
AVCodecID mCodecID;
|
|
};
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // __FFmpegDataDecoder_h__
|