From 3850b79cdcdfb7782a81f9a0801efed02de1af3f Mon Sep 17 00:00:00 2001 From: ChenHengming Date: Mon, 24 Aug 2015 03:52:11 +0000 Subject: [PATCH] [test]: change deinit interface, add more detail to mpi_test git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@153 6e48237b-75ef-9749-8fc9-41990f28c85a --- inc/mpp_buffer.h | 11 +++++ inc/mpp_packet.h | 2 +- inc/rk_mpi.h | 2 +- mpp/mpi.cpp | 5 +-- mpp/mpp_packet.cpp | 6 +-- test/mpi_test.c | 91 ++++++++++++++++++++++++++++++++++++++---- test/mpp_packet_test.c | 4 +- 7 files changed, 103 insertions(+), 18 deletions(-) diff --git a/inc/mpp_buffer.h b/inc/mpp_buffer.h index 26fbb412..96cbc2fe 100644 --- a/inc/mpp_buffer.h +++ b/inc/mpp_buffer.h @@ -25,13 +25,24 @@ * buffer group may need to set a default group size limit */ #define SZ_1K (1024) +#define SZ_2K (SZ_1K*2) #define SZ_4K (SZ_1K*4) +#define SZ_8K (SZ_1K*8) +#define SZ_16K (SZ_1K*16) +#define SZ_32K (SZ_1K*32) +#define SZ_64K (SZ_1K*64) +#define SZ_128K (SZ_1K*128) +#define SZ_256K (SZ_1K*256) +#define SZ_512K (SZ_1K*512) #define SZ_1M (SZ_1K*SZ_1K) #define SZ_2M (SZ_1M*2) #define SZ_4M (SZ_1M*4) #define SZ_8M (SZ_1M*8) +#define SZ_16M (SZ_1M*16) +#define SZ_32M (SZ_1M*32) #define SZ_64M (SZ_1M*64) #define SZ_80M (SZ_1M*80) +#define SZ_128M (SZ_1M*128) /* * MppBuffer module has several functions: diff --git a/inc/mpp_packet.h b/inc/mpp_packet.h index 9f918502..8c44cf75 100644 --- a/inc/mpp_packet.h +++ b/inc/mpp_packet.h @@ -33,7 +33,7 @@ MPP_RET mpp_packet_init(MppPacket *packet, void *data, size_t size); MPP_RET mpp_packet_set_pts(MppPacket packet, RK_S64 pts); MPP_RET mpp_packet_set_dts(MppPacket packet, RK_S64 dts); MPP_RET mpp_packet_set_eos(MppPacket packet); -MPP_RET mpp_packet_deinit(MppPacket *packet); +MPP_RET mpp_packet_deinit(MppPacket packet); #ifdef __cplusplus } diff --git a/inc/rk_mpi.h b/inc/rk_mpi.h index c5bec522..88cf12de 100644 --- a/inc/rk_mpi.h +++ b/inc/rk_mpi.h @@ -82,7 +82,7 @@ extern "C" { * mpp interface */ MPP_RET mpp_init(MppCtx *ctx, MppApi **mpi); -MPP_RET mpp_deinit(MppCtx* ctx); +MPP_RET mpp_deinit(MppCtx ctx); #ifdef __cplusplus } diff --git a/mpp/mpi.cpp b/mpp/mpi.cpp index 9b45d932..cacea042 100644 --- a/mpp/mpi.cpp +++ b/mpp/mpi.cpp @@ -160,7 +160,7 @@ MPP_RET mpp_init(MppCtx *ctx, MppApi **mpi) return MPP_OK; } -MPP_RET mpp_deinit(MppCtx* ctx) +MPP_RET mpp_deinit(MppCtx ctx) { MpiImpl *p; MPI_FUNCTION_ENTER(); @@ -170,7 +170,7 @@ MPP_RET mpp_deinit(MppCtx* ctx) return MPP_ERR_NULL_PTR; } - p = (MpiImpl*)*ctx; + p = (MpiImpl*)ctx; if (p->check != p) { mpp_err("mpp_deinit input invalid MppCtx\n"); @@ -179,7 +179,6 @@ MPP_RET mpp_deinit(MppCtx* ctx) if (p) mpp_free(p); - *ctx = NULL; MPI_FUNCTION_LEAVE(); return MPP_OK; diff --git a/mpp/mpp_packet.cpp b/mpp/mpp_packet.cpp index a698061c..d33036ac 100644 --- a/mpp/mpp_packet.cpp +++ b/mpp/mpp_packet.cpp @@ -79,16 +79,14 @@ MPP_RET mpp_packet_set_eos(MppPacket packet) return MPP_OK; } -MPP_RET mpp_packet_deinit(MppPacket *packet) +MPP_RET mpp_packet_deinit(MppPacket packet) { if (NULL == packet) { mpp_err("mpp_packet_deinit invalid input packet %p\n", packet); return MPP_ERR_NULL_PTR; } - mpp_packet_impl *p = (mpp_packet_impl *)*packet; - mpp_free(p); - *packet = NULL; + mpp_free((mpp_packet_impl *)packet); return MPP_OK; } diff --git a/test/mpi_test.c b/test/mpi_test.c index d969fa5a..fa4d452c 100644 --- a/test/mpi_test.c +++ b/test/mpi_test.c @@ -14,15 +14,23 @@ * limitations under the License. */ +#if defined(_WIN32) +#include "vld.h" +#endif + #define MODULE_TAG "mpi_test" #include - #include "rk_mpi.h" - #include "mpp_log.h" #include "mpp_env.h" + +#define MPI_DEC_LOOP_COUNT 4 +#define MPI_ENC_LOOP_COUNT 4 + +#define MPI_STREAM_SIZE (SZ_512K) + int main() { MPP_RET ret; @@ -38,10 +46,20 @@ int main() MPI_CMD cmd = MPI_MPP_CMD_BASE; MppParam param = NULL; + RK_S32 i; + char *buf = NULL; + RK_S32 size = MPI_STREAM_SIZE; + mpp_log("mpi_test start\n"); mpp_env_set_u32("mpi_debug", 0x1); + buf = malloc(size); + if (NULL == buf) { + mpp_err("mpi_test malloc failed\n"); + goto MPP_TEST_FAILED; + } + mpp_log("mpi_test decoder test start\n"); // decoder demo @@ -63,9 +81,55 @@ int main() goto MPP_TEST_FAILED; } - mpi->decode(ctx, dec_in, &dec_out); - mpi->decode_put_packet(ctx, dec_in); - mpi->decode_get_frame(ctx, &dec_out); + // interface with both input and output + for (i = 0; i < MPI_DEC_LOOP_COUNT; i++) { + mpp_packet_init(&dec_in, buf, size); + + // TODO: read stream data to buf + + ret = mpi->decode(ctx, dec_in, &dec_out); + if (MPP_OK != ret) { + goto MPP_TEST_FAILED; + } + + if (dec_out) { + // TODO: diaplay function called here + + mpp_frame_deinit(dec_out); + dec_out = NULL; + } + + mpp_packet_deinit(dec_in); + dec_in = NULL; + } + + // interface with input and output separated + for (i = 0; i < MPI_DEC_LOOP_COUNT; i++) { + mpp_packet_init(&dec_in, buf, size); + + // TODO: read stream data to buf + + ret = mpi->decode_put_packet(ctx, dec_in); + if (MPP_OK != ret) { + goto MPP_TEST_FAILED; + } + + mpp_packet_deinit(dec_in); + dec_in = NULL; + } + + for (i = 0; i < MPI_DEC_LOOP_COUNT; i++) { + ret = mpi->decode_get_frame(ctx, &dec_out); + if (MPP_OK != ret) { + goto MPP_TEST_FAILED; + } + + if (dec_out) { + mpp_frame_deinit(dec_out); + dec_out = NULL; + } + } + ret = mpi->flush(ctx); if (MPP_OK != ret) { @@ -73,7 +137,7 @@ int main() goto MPP_TEST_FAILED; } - mpp_deinit(&ctx); + mpp_deinit(ctx); mpp_log("mpi_test encoder test start\n"); @@ -107,15 +171,28 @@ int main() goto MPP_TEST_FAILED; } - mpp_deinit(&ctx); + if (dec_in) { + mpp_packet_deinit(dec_in); + dec_in = NULL; + } + + mpp_deinit(ctx); + free(buf); mpp_log("mpi_test success\n"); return 0; MPP_TEST_FAILED: + if (dec_in) { + mpp_packet_deinit(dec_in); + dec_in = NULL; + } + if (ctx) mpp_deinit(ctx); + if (buf) + free(buf); mpp_log("mpi_test failed\n"); diff --git a/test/mpp_packet_test.c b/test/mpp_packet_test.c index 0ac6002b..60ed0a82 100644 --- a/test/mpp_packet_test.c +++ b/test/mpp_packet_test.c @@ -48,7 +48,7 @@ int main() mpp_err("mpp_packet_test mpp_packet_set_eos failed\n"); goto MPP_PACKET_failed; } - mpp_packet_deinit(&packet); + mpp_packet_deinit(packet); free(data); mpp_log("mpp_packet_test success\n"); @@ -56,7 +56,7 @@ int main() MPP_PACKET_failed: if (packet) - mpp_packet_deinit(&packet); + mpp_packet_deinit(packet); if (data) free(data);