{\r
- "version" : "0.0.4948390.firmware",\r
"gstparam1" : "--gst-debug=*:2",\r
"gstparam2" : "--gst-disable-segtrap",\r
"gstparam3" : "--gst-plugin-load",\r
"gstparam4" : "--gst-disable-registry-fork",\r
"gstparam5" : "--gst-disable-registry-update",\r
- "tz_video_es_dump" : false,\r
- "tz_video_dump_insert_vp9_header" : false,\r
- "tz_audio_es_dump" : false,\r
"generate_dot" : false\r
}\r
uint64_t pts = 0;
uint64_t duration = 0;
tbm_surface_h surface_data = nullptr; // tbm_surface
- void* scaler_index = nullptr;
+ void* buffer_addr = nullptr;
};
} // namespace plusplayer
#include <functional>
#include <list>
#include <memory>
+#include <gst/gst.h>
#include "core/utils/plusplayer_log.h"
#include "plusplayer/types/buffer.h"
void DecodedPacketDeleter(esplusplayer_decoded_video_packet* packet) {
if (packet == nullptr || packet->surface_data == nullptr) return;
// LOG_DEBUG("packet[%p] deleted", packet);
- tbm_surface_destroy(static_cast<tbm_surface_h>(packet->surface_data));
- packet->surface_data = NULL;
+ if(packet->private_data) { // hw dec
+ gst_buffer_unref((GstBuffer *)packet->private_data);
+ packet->private_data = nullptr;
+ } else {
+ tbm_surface_destroy(static_cast<tbm_surface_h>(packet->surface_data));
+ packet->surface_data = NULL;
+ }
}
} // namespace
_pkt->pts = packet.pts;
_pkt->duration = packet.duration;
_pkt->surface_data = static_cast<void*>(packet.surface_data);
- _pkt->private_data = packet.scaler_index;
+ _pkt->private_data = packet.buffer_addr;
if (decoded_pkt_mgr_ && decoded_pkt_mgr_->TryToAdd(_pkt)) {
this->media_packet_video_decoded_cb_(
_pkt, media_packet_video_decoded_cb_userdata_);
_packet.pts = packet->pts;
_packet.duration = packet->duration;
_packet.surface_data = static_cast<tbm_surface_h>(packet->surface_data);
- _packet.scaler_index = packet->scaler_index;
+ _packet.buffer_addr = packet->buffer_addr;
return _packet;
}
void* userdata) {
std::cout << "OnBufferTimeStatus" << std::endl;
}
- static void OnVideoDecoded(const esplusplayer_decoded_video_packet*,
+ static void OnVideoDecoded(const esplusplayer_decoded_video_packet * pkt,
void* userdata) {
+ EsPlayerEventCallback* cb = static_cast<EsPlayerEventCallback*>(userdata);
+
std::cout << "OnVideoDecoded" << std::endl;
+ esplusplayer_decoded_buffer_destroy (cb->handle_, (esplusplayer_decoded_video_packet *)pkt);
}
static void OnClosedCaption(const char* data, const int size,
void* userdata) {
- std::cout << "OnVideoDecoded" << std::endl;
+ std::cout << "OnClosedCaption" << std::endl;
}
static void OnFlushDone(void* userdata) {
std::cout << "OnFlushDone" << std::endl;
ASSERT_EQ(esplusplayer_destroy(esplayer), ESPLUSPLAYER_ERROR_TYPE_NONE);
}
+TEST_P(EsBasicTest, vdapi_basic_esplusplayer_set_video_frame_buffer_type_p_2) {
+ ASSERT_EQ(esplusplayer_open(esplayer_), ESPLUSPLAYER_ERROR_TYPE_NONE);
+ ASSERT_EQ(esplusplayer_set_video_frame_buffer_type(
+ esplayer_, ESPLUSPLAYER_DECODED_VIDEO_FRAME_BUFFER_TYPE_REFERENCE),
+ ESPLUSPLAYER_ERROR_TYPE_NONE);
+
+ ASSERT_TRUE(video_reader_->SetStreamInfo(esplayer_));
+ ASSERT_TRUE(audio_reader_->SetStreamInfo(esplayer_));
+ ASSERT_EQ(esplusplayer_prepare_async(esplayer_),
+ ESPLUSPLAYER_ERROR_TYPE_NONE);
+
+ callback_->WaitForPrepareDone();
+ ASSERT_EQ(esplusplayer_start(esplayer_), ESPLUSPLAYER_ERROR_TYPE_NONE);
+ std::this_thread::sleep_for(std::chrono::seconds(10));
+
+ std::cout << "BasicTest, set video frame buffer type, END" << std::endl;
+}
+
TEST_F(EsTest, vdapi_basic_esplusplayer_set_buffer_size_p_1) {
esplusplayer_handle esplayer = esplusplayer_create();
ASSERT_NE(nullptr, esplayer);