Files
BPI-CM9-Linux/aml-comp/multimedia/aml_mp_sdk/demux/AmlTunerHalDemux.h
T
2026-08-24 10:03:24 +08:00

77 lines
2.3 KiB
C++

/*
* Copyright (c) 2021 Amlogic, Inc. All rights reserved.
*
* This source code is subject to the terms and conditions defined in the
* file 'LICENSE' which is part of this source code package.
*
* Description:
*/
#ifndef _AML_MP_TUNERHAL_DEMUX_H_
#define _AML_MP_TUNERHAL_DEMUX_H_
#include "AmlDemuxBase.h"
#include "tunerhal/TunerService.h"
namespace aml_mp {
class AmlTunerHalDemux;
class TunerHalTsParser : public AmlDemuxBase::ITsParser
{
public:
TunerHalTsParser(const std::function<FilterCallback>& cb);
~TunerHalTsParser();
virtual int feedTs(const uint8_t* buffer, size_t size);
virtual void reset();
virtual int addDemuxFilter(int pid, const Aml_MP_DemuxFilterParams* params);
virtual void removeDemuxFilter(int pid);
private:
TunerHalTsParser(const TunerHalTsParser&) = delete;
TunerHalTsParser& operator=(const TunerHalTsParser&) = delete;
};
class SectionFilterCallback : public TunerFilter::TunerFilterCallback {
public:
SectionFilterCallback(){};
~SectionFilterCallback() {};
virtual void onFilterEvent(const DemuxFilterEvent& filterEvent) override;
virtual void onFilterStatus(const DemuxFilterStatus status) override;
sptr<TunerFilter> mTunerFilter = nullptr;
sptr<AmlTunerHalDemux> mAmlTunerHalDemux = nullptr;
int mPid = 0;
};
class AmlTunerHalDemux : public AmlDemuxBase
{
public:
AmlTunerHalDemux();
~AmlTunerHalDemux();
virtual int open(bool isHardwareSource, Aml_MP_DemuxId demuxId, bool isSecureBuffer = false) override;
virtual int start() override;
virtual int feedTs(const uint8_t* buffer, size_t size) override;
virtual int flush() override;
virtual int stop() override;
virtual int close() override;
virtual int addDemuxFilter(int pid, const Aml_MP_DemuxFilterParams* params) override;
virtual int removeDemuxFilter(int pid) override;
virtual bool isStopped() const override;
void notifyDataWrapper(int pid, const sptr<AmlMpBuffer>& data, int version);
private:
TunerService& mTunerService;
sptr<TunerHalTsParser> mTsParser = nullptr;
sptr<TunerDemux> mTunerDemux = nullptr;
sptr<TunerDvr> mTunerDvr = nullptr;
std::map<int, sptr<TunerFilter>> mTunerFilterMap;
AmlTunerHalDemux(const AmlTunerHalDemux&) = delete;
AmlTunerHalDemux& operator= (const AmlTunerHalDemux&) = delete;
};
}
#endif // _AML_MP_TUNERHAL_DEMUX_H_