From 18a05d269516a5e33d8460291c2f93e73d95adce Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 26 十二月 2023 10:45:31 +0800 Subject: [PATCH] GetYUV format is NV12 --- csrc/ffmpeg/format/FormatOut.hpp | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) diff --git a/csrc/ffmpeg/format/FormatOut.hpp b/csrc/ffmpeg/format/FormatOut.hpp index fc6fa1b..2a7e280 100644 --- a/csrc/ffmpeg/format/FormatOut.hpp +++ b/csrc/ffmpeg/format/FormatOut.hpp @@ -4,7 +4,6 @@ #include <stdlib.h> #include <memory> #include <string> -#include <vector> struct AVFormatContext; struct AVStream; @@ -12,6 +11,7 @@ struct AVFrame; struct AVPacket; struct AVDictionary; +struct AVBSFContext; namespace ffwrapper{ class VideoProp; @@ -35,18 +35,19 @@ int encode(AVPacket *pkt, AVFrame *frame); public: - bool copyCodecFromIn(AVFormatContext* in); + bool addStream(AVStream *s); + bool copyCodecFromIn(AVStream *v, AVStream *a); bool openResource(const char *filename, const int flags); bool closeResource(); - bool JustWriter(AVFormatContext* in, const char *filename); + bool JustWriter(AVStream *v, AVStream *a, const char *filename); bool EncodeWriter(const char *filename); bool writeFrame(AVPacket *pkt, const int64_t &frame_cnt, bool interleaved = true); void adjustPTS(AVPacket *pkt, const int64_t &frame_cnt); bool endWriter(); bool writeHeader(AVDictionary **options = NULL); - bool writeFrame2(AVPacket *pkt, bool interleaved); + bool writeFrameInternal(AVPacket *pkt, bool interleaved); bool writeTrailer(); public: AVStream *getStream(); @@ -65,6 +66,8 @@ int a_idx_; AVCodecContext *enc_ctx_; + AVBSFContext *bsf_h264, *bsf_hevc; + int64_t sync_opts_; bool record_; @@ -73,7 +76,8 @@ std::string format_name_; // rec - AVFormatContext *in_ctx_; + AVStream *in_v_stream_; + AVStream *in_a_stream_; }; } #endif \ No newline at end of file -- Gitblit v1.8.0