diff --git a/mpp/mpi.cpp b/mpp/mpi.cpp index e2585933..11d275a9 100644 --- a/mpp/mpi.cpp +++ b/mpp/mpi.cpp @@ -190,7 +190,7 @@ MPP_RET mpp_create(MppCtx *ctx, MppApi **mpi) return MPP_ERR_MALLOC; } - mpp_api.version = get_mpp_revision(); + mpp_api.version = mpp_info_get_revision(); p->api = &mpp_api; p->check = p; *ctx = p; diff --git a/mpp/mpp.cpp b/mpp/mpp.cpp index 6b471976..8743fc30 100644 --- a/mpp/mpp.cpp +++ b/mpp/mpp.cpp @@ -60,6 +60,7 @@ Mpp::Mpp() mStatus(0) { } + MPP_RET Mpp::init(MppCtxType type, MppCodingType coding) { diff --git a/mpp/mpp_info.cpp b/mpp/mpp_info.cpp index 117216a8..f9fcdc0b 100644 --- a/mpp/mpp_info.cpp +++ b/mpp/mpp_info.cpp @@ -25,8 +25,6 @@ #include "svn_info.h" -mpp_info *mpp_info::singleton = NULL; - /* * To avoid string | grep author getting multiple results * use commit to replace author @@ -36,14 +34,6 @@ static char mpp_version_commit[] = SVN_AUTHOR; static char mpp_version_date[] = SVN_DATE; static char mpp_version_one_line[] = SVN_ONE_LINE; -mpp_info *mpp_info::getInstance() -{ - if (singleton == NULL) { - singleton = new mpp_info(); - } - return singleton; -} - static RK_CHIP_TYPE chip_version(void) { RK_CHIP_TYPE type = NONE; @@ -78,21 +68,26 @@ static RK_CHIP_TYPE chip_version(void) return type; } -mpp_info::mpp_info() +const char *mpp_info_get(MPP_INFO_TYPE type) { - chip_type = chip_version(); - - mpp_info_revision = mpp_version_revision; - mpp_info_commit = mpp_version_commit; - mpp_info_date = mpp_version_date; - mpp_revision = atoi(SVN_VERSION); - - show_mpp_info(); -} - -void mpp_info::show_mpp_info() -{ - mpp_log("%s\n", mpp_version_one_line); + switch (type) { + case INFO_ALL : { + return mpp_version_one_line; + } break; + case INFO_REVISION : { + return mpp_version_revision; + } break; + case INFO_DATE : { + return mpp_version_date; + } break; + case INFO_AUTHOR : { + return mpp_version_commit; + } break; + default : { + mpp_err_f("invalid info type %d\n", type); + } break; + } + return NULL; } RK_CHIP_TYPE get_chip_type() @@ -100,7 +95,7 @@ RK_CHIP_TYPE get_chip_type() return chip_version(); } -int get_mpp_revision() +int mpp_info_get_revision() { return atoi(SVN_VERSION); } diff --git a/mpp/mpp_info.h b/mpp/mpp_info.h index 41d0a674..074dfee0 100644 --- a/mpp/mpp_info.h +++ b/mpp/mpp_info.h @@ -27,31 +27,22 @@ typedef enum RK_CHIP_TYPE { RK_CHIP_NUM = 0x100, } RK_CHIP_TYPE; +typedef enum MPP_INFO_TYPE { + INFO_ALL, + INFO_REVISION, + INFO_DATE, + INFO_AUTHOR, + + INFO_BUTT, +} MPP_INFO_TYPE; + #ifdef __cplusplus -class mpp_info -{ -public: - RK_CHIP_TYPE get_chip_type() {return chip_type;} - int get_mpp_revision() {return mpp_revision;} - void show_mpp_info(); - - static mpp_info *getInstance(); - virtual ~mpp_info() {}; -private: - static mpp_info *singleton; - mpp_info(); - int mpp_revision; - char *mpp_info_revision; - char *mpp_info_commit; - char *mpp_info_date; - RK_CHIP_TYPE chip_type; -}; - extern "C" { #endif /* __cplusplus */ RK_CHIP_TYPE get_chip_type(); -int get_mpp_revision(); +const char *mpp_info_get(MPP_INFO_TYPE type); +int mpp_info_get_revision(); #ifdef __cplusplus } diff --git a/mpp/test/mpp_info_test.c b/mpp/test/mpp_info_test.c index 8e875b6d..e6e91752 100644 --- a/mpp/test/mpp_info_test.c +++ b/mpp/test/mpp_info_test.c @@ -21,7 +21,11 @@ int main() { - mpp_log("mpp revision is %d\n", get_mpp_revision()); + mpp_log("mpp revision is %d\n", mpp_info_get_revision()); + mpp_log("mpp info all:\n%s\n", mpp_info_get(INFO_ALL)); + mpp_log("mpp info revision: %s\n", mpp_info_get(INFO_REVISION)); + mpp_log("mpp info date : %s\n", mpp_info_get(INFO_DATE)); + mpp_log("mpp info author : %s\n", mpp_info_get(INFO_AUTHOR)); return 0; }