#include <gmodule.h>
#include <limits.h>
+#include <inttypes.h>
#include "mm_util_private.h"
#include "mm_util_imgp.h"
#include "mm_util_imgp_internal.h"
static int __mm_create_media_packet_with_buffer(media_format_h fmt, void *buffer, guint buffer_size, media_packet_h *pkt)
{
int err = MEDIA_PACKET_ERROR_NONE;
- uint64_t size = 0;
+ uint64_t packet_buffer_size = 0;
+ size_t size = 0;
void *ptr = NULL;
if ((fmt == NULL) || (pkt == NULL) || (buffer == NULL) || (buffer_size == 0)) {
return MM_UTIL_ERROR_INVALID_OPERATION;
}
- err = media_packet_get_buffer_size(*pkt, &size);
+ err = media_packet_get_buffer_size(*pkt, &packet_buffer_size);
if (err != MEDIA_PACKET_ERROR_NONE) {
mm_util_error("media_packet_get_buffer_size failed (%d)", err);
media_packet_destroy(*pkt);
return MM_UTIL_ERROR_INVALID_OPERATION;
}
- if (size < (uint64_t)buffer_size) {
- mm_util_error("The buffer(%lu) of media_packet is smaller than result(%u)", size, buffer_size);
+ err = media_packet_get_buffer_data_ptr(*pkt, &ptr);
+ if (err != MM_UTIL_ERROR_NONE) {
+ mm_util_error("media_packet_get_buffer_data_ptr failed (%d)", err);
media_packet_destroy(*pkt);
return MM_UTIL_ERROR_INVALID_OPERATION;
}
- err = media_packet_get_buffer_data_ptr(*pkt, &ptr);
- if (err != MM_UTIL_ERROR_NONE) {
- mm_util_error("media_packet_get_buffer_data_ptr failed (%d)", err);
+ if (ptr == NULL || packet_buffer_size == 0) {
+ mm_util_error("The ptr(%p) and size(%" PRIu64 ") was wrong", ptr, packet_buffer_size);
media_packet_destroy(*pkt);
return MM_UTIL_ERROR_INVALID_OPERATION;
}
- mm_util_debug("Success - media_packet is created (%p, %lu)", *pkt, size);
+ if ((uint64_t)buffer_size < packet_buffer_size) {
+ size = (size_t)buffer_size;
+ } else {
+ size = (size_t)packet_buffer_size;
+ }
+
+ mm_util_error("Size: result(%u) media_packet(%" PRIu64 ") use(%zu)", buffer_size, packet_buffer_size, size);
+ mm_util_debug("Success - media_packet is created (%p, %" PRIu64 ")", *pkt, packet_buffer_size);
- memcpy(ptr, buffer, buffer_size);
+ memcpy(ptr, buffer, size);
return MM_UTIL_ERROR_NONE;
}