Improve validity function for MPEG-TS 04/234704/2
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 28 May 2020 06:05:06 +0000 (15:05 +0900)
committerMinje ahn <minje.ahn@samsung.com>
Thu, 28 May 2020 23:21:28 +0000 (23:21 +0000)
Change-Id: I076f59e39d966cbf6ed8cb326cf0cd863a3616e4
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
utils/mm_file_util_validity.c

index bcdb2cd9368afcd66f80c1c8b369d3ca6adcd330..c99ceba98fb72d96787465ecb844b5e38fa8530a 100755 (executable)
@@ -1110,43 +1110,29 @@ static bool _MMFileIsMMFHeader(void *header)
 
 static int _MMFileIsMPEGTSHeader(MMFileIOHandle *fp)
 {
-       unsigned char header[TS_MAX_PACKET_SIZE] = {0, };
+       unsigned char buffer[TS_MAX_PACKET_SIZE] = {0, };
        unsigned char *s = NULL;
+       unsigned int startoffset = 0;
 
        mmfile_seek(fp, 0, MMFILE_SEEK_SET);
-       mmfile_read(fp, header, sizeof(header));
-
-       s = (unsigned char *)memchr(header, 0x47, sizeof(header));
-
-       if (s) {
-               unsigned char buffer[TS_PACKET_SIZE] = {0, };
-               unsigned int  startoffset = s - header + 1;
-
-               mmfile_seek(fp, startoffset, MMFILE_SEEK_SET);
-               mmfile_read(fp, buffer, sizeof(buffer));
+       mmfile_read(fp, buffer, TS_MAX_PACKET_SIZE);
 
-               if (buffer[sizeof(buffer) - 1] & 0x47) {
-                       return MPEGTS_PACKET;
-               } else {
-                       unsigned char dvhs_buf[TS_DVHS_PACKET_SIZE] = {0, };
+       s = (unsigned char *)memchr(buffer, 0x47, TS_MAX_PACKET_SIZE);
+       mm_file_retv_if_fails(s, MPEGTS_NONE);
 
-                       mmfile_seek(fp, startoffset, MMFILE_SEEK_SET);
-                       mmfile_read(fp, dvhs_buf, sizeof(dvhs_buf));
+       startoffset = s - buffer + 1;
 
-                       if (dvhs_buf[sizeof(dvhs_buf) - 1] & 0x47) {
-                               return MPEGTS_DVHS;
-                       } else {
-                               unsigned char fec_buf[TS_FEC_PACKET_SIZE] = {0, };
+       memset(&buffer, 0x00, TS_MAX_PACKET_SIZE);
 
-                               mmfile_seek(fp, startoffset, MMFILE_SEEK_SET);
-                               mmfile_read(fp, fec_buf, sizeof(fec_buf));
+       mmfile_seek(fp, startoffset, MMFILE_SEEK_SET);
+       mmfile_read(fp, buffer, TS_MAX_PACKET_SIZE);
 
-                               if (fec_buf[sizeof(fec_buf) - 1] & 0x47) {
-                                       return MPEGTS_FECE;
-                               }
-                       }
-               }
-       }
+       if (buffer[TS_PACKET_SIZE - 1] & 0x47)
+               return MPEGTS_PACKET;
+       else if (buffer[TS_DVHS_PACKET_SIZE - 1] & 0x47)
+               return MPEGTS_DVHS;
+       else if (buffer[TS_FEC_PACKET_SIZE - 1] & 0x47)
+               return MPEGTS_FECE;
 
        return MPEGTS_NONE;
 }