修复阶段4之前的问题
This commit is contained in:
parent
99dd85293e
commit
36dc4911f1
@ -17,6 +17,7 @@ namespace rk3588 {
|
||||
namespace {
|
||||
|
||||
std::string GetEnvOrDefault(const std::string& env_name, const std::string& default_val) {
|
||||
(void)env_name;
|
||||
// Handle ${ENV_VAR} syntax
|
||||
if (default_val.size() > 3 && default_val.substr(0, 2) == "${" &&
|
||||
default_val.back() == '}') {
|
||||
|
||||
@ -227,7 +227,7 @@ private:
|
||||
frame->data_size = buffer->size();
|
||||
frame->plane_count = plane_count;
|
||||
frame->frame_id = ++frame_id_;
|
||||
auto best_pts = av_frame_get_best_effort_timestamp(&f);
|
||||
auto best_pts = f.pts; // av_frame_get_best_effort_timestamp is deprecated
|
||||
frame->pts = best_pts == AV_NOPTS_VALUE ? 0
|
||||
: static_cast<uint64_t>(av_rescale_q(best_pts, time_base, {1, 1000}));
|
||||
frame->data_owner = buffer;
|
||||
@ -358,7 +358,7 @@ private:
|
||||
MppBufferGroup group = frame_group;
|
||||
size_t buf_size = mpp_frame_get_buf_size(frame);
|
||||
if (!group) {
|
||||
if (mpp_buffer_group_get_internal(&group, MPP_BUFFER_TYPE_DRM) != MPP_OK) return;
|
||||
if (mpp_buffer_group_get_internal(&group, MPP_BUFFER_TYPE_DRM, NULL) != MPP_OK) return;
|
||||
frame_group = group;
|
||||
} else {
|
||||
mpp_buffer_group_clear(group);
|
||||
|
||||
@ -374,7 +374,6 @@ private:
|
||||
<< " -> " << out_w << "x" << out_h << "\n";
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static AVPixelFormat ToAvFormat(PixelFormat fmt) {
|
||||
switch (fmt) {
|
||||
|
||||
@ -94,26 +94,28 @@ public:
|
||||
if (!ready_ || !fmt_ || !stream_) return false;
|
||||
if (pkt.data.empty()) return false;
|
||||
|
||||
AVPacket out;
|
||||
av_init_packet(&out);
|
||||
if (av_new_packet(&out, static_cast<int>(pkt.data.size())) < 0) {
|
||||
AVPacket* out = av_packet_alloc();
|
||||
if (!out) return false;
|
||||
|
||||
if (av_new_packet(out, static_cast<int>(pkt.data.size())) < 0) {
|
||||
av_packet_free(&out);
|
||||
return false;
|
||||
}
|
||||
std::memcpy(out.data, pkt.data.data(), pkt.data.size());
|
||||
out.stream_index = stream_->index;
|
||||
out.flags = pkt.key ? AV_PKT_FLAG_KEY : 0;
|
||||
std::memcpy(out->data, pkt.data.data(), pkt.data.size());
|
||||
out->stream_index = stream_->index;
|
||||
out->flags = pkt.key ? AV_PKT_FLAG_KEY : 0;
|
||||
|
||||
// Simple PTS mapping
|
||||
int64_t pts = av_rescale_q(pkt.pts_ms, AVRational{1, 1000}, stream_->time_base);
|
||||
if (pts <= last_pts_) pts = last_pts_ + 1;
|
||||
last_pts_ = pts;
|
||||
|
||||
out.pts = pts;
|
||||
out.dts = pts;
|
||||
out.duration = av_rescale_q(1000 / std::max(1, fps_), AVRational{1, 1000}, stream_->time_base);
|
||||
out->pts = pts;
|
||||
out->dts = pts;
|
||||
out->duration = av_rescale_q(1000 / std::max(1, fps_), AVRational{1, 1000}, stream_->time_base);
|
||||
|
||||
int ret = av_interleaved_write_frame(fmt_, &out);
|
||||
av_packet_unref(&out);
|
||||
int ret = av_interleaved_write_frame(fmt_, out);
|
||||
av_packet_free(&out);
|
||||
|
||||
if (ret < 0) {
|
||||
if (!warned_) {
|
||||
@ -406,8 +408,8 @@ public:
|
||||
mpp_packet_deinit(&hdr);
|
||||
}
|
||||
|
||||
if (mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_DRM) != MPP_OK) {
|
||||
if (mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_NORMAL) != MPP_OK) {
|
||||
if (mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_DRM, NULL) != MPP_OK) {
|
||||
if (mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_NORMAL, NULL) != MPP_OK) {
|
||||
std::cerr << "[publish] mpp_buffer_group_get_internal failed\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -119,8 +119,8 @@ public:
|
||||
MppEncHeaderMode header_mode = MPP_ENC_HEADER_MODE_EACH_IDR;
|
||||
mpi_->control(ctx_, MPP_ENC_SET_HEADER_MODE, &header_mode);
|
||||
|
||||
if (mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_DRM) != MPP_OK) {
|
||||
mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_NORMAL);
|
||||
if (mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_DRM, NULL) != MPP_OK) {
|
||||
mpp_buffer_group_get_internal(&frm_grp_, MPP_BUFFER_TYPE_NORMAL, NULL);
|
||||
}
|
||||
|
||||
// Get header
|
||||
|
||||
@ -114,6 +114,7 @@ ModelHandle AiScheduler::LoadModel(const std::string& model_path, std::string& e
|
||||
|
||||
return handle;
|
||||
#else
|
||||
(void)model_path;
|
||||
err = "RKNN not enabled";
|
||||
return kInvalidModelHandle;
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user