diff --git a/projects/rocdecode/src/parser/hevc_parser.cpp b/projects/rocdecode/src/parser/hevc_parser.cpp index 211f1e3634..df197078cd 100644 --- a/projects/rocdecode/src/parser/hevc_parser.cpp +++ b/projects/rocdecode/src/parser/hevc_parser.cpp @@ -243,7 +243,7 @@ void HEVCVideoParser::FillSeqCallbackFn(SpsData* sps_data) { video_format_params_.seqhdr_data_length = 0; // callback function with RocdecVideoFormat params filled out - pfn_sequece_cb_ = PFNVIDSEQUENCECALLBACK(&video_format_params_); + pfn_sequece_cb_(parser_params_.pUserData, &video_format_params_); } bool HEVCVideoParser::ParseFrameData(const uint8_t* p_stream, uint32_t frame_data_size) { diff --git a/projects/rocdecode/src/parser/roc_video_parser.cpp b/projects/rocdecode/src/parser/roc_video_parser.cpp index f4e5f4e758..adcf790228 100644 --- a/projects/rocdecode/src/parser/roc_video_parser.cpp +++ b/projects/rocdecode/src/parser/roc_video_parser.cpp @@ -44,7 +44,7 @@ rocDecStatus RocVideoParser::Initialize(RocdecParserParams *pParams) { pfn_display_picture_cb_ = pParams->pfnDisplayPicture; /**< Called whenever a picture is ready to be displayed (display order) */ pfn_get_sei_message_cb_ = pParams->pfnGetSEIMsg; /**< Called when all SEI messages are parsed for particular frame */ - parser_params_ = pParams; + parser_params_ = *pParams; return ROCDEC_SUCCESS; } diff --git a/projects/rocdecode/src/parser/roc_video_parser.h b/projects/rocdecode/src/parser/roc_video_parser.h index 834c66f476..4d540bf792 100644 --- a/projects/rocdecode/src/parser/roc_video_parser.h +++ b/projects/rocdecode/src/parser/roc_video_parser.h @@ -33,16 +33,16 @@ THE SOFTWARE. class RocVideoParser { public: RocVideoParser(); // default constructor - RocVideoParser(RocdecParserParams *pParams) : parser_params_(pParams) {}; + RocVideoParser(RocdecParserParams *pParams) : parser_params_(*pParams) {}; virtual ~RocVideoParser() = default ; - virtual void SetParserParams(RocdecParserParams *pParams) { parser_params_ = pParams; }; - RocdecParserParams *GetParserParams() {return parser_params_;}; + virtual void SetParserParams(RocdecParserParams *pParams) { parser_params_ = *pParams; }; + RocdecParserParams *GetParserParams() {return &parser_params_;}; virtual rocDecStatus Initialize(RocdecParserParams *pParams); virtual rocDecStatus ParseVideoData(RocdecSourceDataPacket *pData) = 0; // pure virtual: implemented by derived class virtual rocDecStatus UnInitialize() = 0; // pure virtual: implemented by derived class protected: - RocdecParserParams *parser_params_ = nullptr; + RocdecParserParams parser_params_ = {}; /** * @brief callback function pointers for the parser *