From b3825c402144a355c040eadd366d5cd15d746178 Mon Sep 17 00:00:00 2001
From: winlin <winlin@vip.126.com>
Date: Tue, 13 Jun 2017 16:10:46 +0800
Subject: [PATCH] Fix warnings

---
 trunk/src/kernel/srs_kernel_codec.cpp    |  8 +++---
 trunk/src/kernel/srs_kernel_file.cpp     | 11 +++++---
 trunk/src/kernel/srs_kernel_flv.cpp      | 10 ++++++-
 trunk/src/kernel/srs_kernel_flv.hpp      |  3 +++
 trunk/src/kernel/srs_kernel_mp4.cpp      | 29 +++++++++++---------
 trunk/src/kernel/srs_kernel_utility.cpp  |  2 +-
 trunk/src/libs/srs_librtmp.cpp           | 34 +++++++++---------------
 trunk/src/libs/srs_librtmp.hpp           |  5 ++++
 trunk/src/protocol/srs_protocol_amf0.cpp |  4 +++
 9 files changed, 64 insertions(+), 42 deletions(-)

diff --git a/trunk/src/kernel/srs_kernel_codec.cpp b/trunk/src/kernel/srs_kernel_codec.cpp
index 491e513f5..b151f302d 100644
--- a/trunk/src/kernel/srs_kernel_codec.cpp
+++ b/trunk/src/kernel/srs_kernel_codec.cpp
@@ -568,14 +568,14 @@ int SrsFormat::on_audio(int64_t timestamp, char* data, int size)
         return ret;
     }
     
+    // Parse by specified codec.
     buffer->skip(-1 * buffer->pos());
+    
     if (codec == SrsAudioCodecIdMP3) {
         return audio_mp3_demux(buffer, timestamp);
-    } else if (codec == SrsAudioCodecIdAAC) {
-        return audio_aac_demux(buffer, timestamp);
-    } else {
-        return ret;
     }
+    
+    return audio_aac_demux(buffer, timestamp);
 }
 
 int SrsFormat::on_video(int64_t timestamp, char* data, int size)
diff --git a/trunk/src/kernel/srs_kernel_file.cpp b/trunk/src/kernel/srs_kernel_file.cpp
index 7a29195ac..4cbe502cd 100644
--- a/trunk/src/kernel/srs_kernel_file.cpp
+++ b/trunk/src/kernel/srs_kernel_file.cpp
@@ -119,7 +119,8 @@ bool SrsFileWriter::is_open()
 
 void SrsFileWriter::seek2(int64_t offset)
 {
-    ::lseek(fd, (off_t)offset, SEEK_SET);
+    off_t r0 = ::lseek(fd, (off_t)offset, SEEK_SET);
+    srs_assert(r0 != -1);
 }
 
 int64_t SrsFileWriter::tellg()
@@ -241,7 +242,8 @@ int64_t SrsFileReader::tellg()
 
 void SrsFileReader::skip(int64_t size)
 {
-    ::lseek(fd, (off_t)size, SEEK_CUR);
+    off_t r0 = ::lseek(fd, (off_t)size, SEEK_CUR);
+    srs_assert(r0 != -1);
 }
 
 int64_t SrsFileReader::seek2(int64_t offset)
@@ -253,7 +255,10 @@ int64_t SrsFileReader::filesize()
 {
     int64_t cur = tellg();
     int64_t size = (int64_t)::lseek(fd, 0, SEEK_END);
-    ::lseek(fd, (off_t)cur, SEEK_SET);
+    
+    off_t r0 = ::lseek(fd, (off_t)cur, SEEK_SET);
+    srs_assert(r0 != -1);
+    
     return size;
 }
 
diff --git a/trunk/src/kernel/srs_kernel_flv.cpp b/trunk/src/kernel/srs_kernel_flv.cpp
index 2fd385780..7cfd4eb23 100644
--- a/trunk/src/kernel/srs_kernel_flv.cpp
+++ b/trunk/src/kernel/srs_kernel_flv.cpp
@@ -192,6 +192,14 @@ int SrsCommonMessage::create(SrsMessageHeader* pheader, char* body, int size)
     return ret;
 }
 
+SrsSharedMessageHeader::SrsSharedMessageHeader() : payload_length(0), message_type(0), perfer_cid(0)
+{
+}
+
+SrsSharedMessageHeader::~SrsSharedMessageHeader()
+{
+}
+
 SrsSharedPtrMessage::SrsSharedPtrPayload::SrsSharedPtrPayload()
 {
     payload = NULL;
@@ -207,7 +215,7 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
     srs_freepa(payload);
 }
 
-SrsSharedPtrMessage::SrsSharedPtrMessage()
+SrsSharedPtrMessage::SrsSharedPtrMessage() : timestamp(0), stream_id(0), size(0), payload(NULL)
 {
     ptr = NULL;
 }
diff --git a/trunk/src/kernel/srs_kernel_flv.hpp b/trunk/src/kernel/srs_kernel_flv.hpp
index fc0a04c29..f04dbb9ff 100644
--- a/trunk/src/kernel/srs_kernel_flv.hpp
+++ b/trunk/src/kernel/srs_kernel_flv.hpp
@@ -321,6 +321,9 @@ struct SrsSharedMessageHeader
      * for example, dispatch to all connections.
      */
     int perfer_cid;
+    
+    SrsSharedMessageHeader();
+    virtual ~SrsSharedMessageHeader();
 };
 
 /**
diff --git a/trunk/src/kernel/srs_kernel_mp4.cpp b/trunk/src/kernel/srs_kernel_mp4.cpp
index 7d46eee77..79e1c388c 100644
--- a/trunk/src/kernel/srs_kernel_mp4.cpp
+++ b/trunk/src/kernel/srs_kernel_mp4.cpp
@@ -1595,7 +1595,7 @@ int SrsMp4MovieBox::decode_header(SrsBuffer* buf)
     return SrsMp4Box::decode_header(buf);
 }
 
-SrsMp4MovieHeaderBox::SrsMp4MovieHeaderBox()
+SrsMp4MovieHeaderBox::SrsMp4MovieHeaderBox() : creation_time(0), modification_time(0), timescale(0), duration_in_tbn(0)
 {
     type = SrsMp4BoxTypeMVHD;
     
@@ -1956,7 +1956,7 @@ SrsMp4AudioSampleEntry* SrsMp4TrackBox::mp4a()
     return box? box->mp4a():NULL;
 }
 
-SrsMp4TrackHeaderBox::SrsMp4TrackHeaderBox()
+SrsMp4TrackHeaderBox::SrsMp4TrackHeaderBox() : creation_time(0), modification_time(0), track_ID(0)
 {
     type = SrsMp4BoxTypeTKHD;
     
@@ -2090,7 +2090,7 @@ SrsMp4EditBox::~SrsMp4EditBox()
 {
 }
 
-SrsMp4ElstEntry::SrsMp4ElstEntry()
+SrsMp4ElstEntry::SrsMp4ElstEntry() : segment_duration(0), media_time(0), media_rate_integer(0)
 {
     media_rate_fraction = 0;
 }
@@ -2263,7 +2263,7 @@ void SrsMp4MediaBox::set_minf(SrsMp4MediaInformationBox* v)
     boxes.push_back(v);
 }
 
-SrsMp4MediaHeaderBox::SrsMp4MediaHeaderBox()
+SrsMp4MediaHeaderBox::SrsMp4MediaHeaderBox() : duration(0)
 {
     type = SrsMp4BoxTypeMDHD;
     language = 0;
@@ -2388,6 +2388,8 @@ SrsMp4HandlerReferenceBox::SrsMp4HandlerReferenceBox()
     
     pre_defined = 0;
     memset(reserved, 0, 12);
+    
+    handler_type = SrsMp4HandlerTypeForbidden;
 }
 
 SrsMp4HandlerReferenceBox::~SrsMp4HandlerReferenceBox()
@@ -2990,7 +2992,7 @@ int SrsMp4SampleTableBox::decode_header(SrsBuffer* buf)
     return SrsMp4Box::decode_header(buf);
 }
 
-SrsMp4SampleEntry::SrsMp4SampleEntry()
+SrsMp4SampleEntry::SrsMp4SampleEntry() : data_reference_index(0)
 {
     memset(reserved, 0, 6);
 }
@@ -3042,7 +3044,7 @@ stringstream& SrsMp4SampleEntry::dumps_detail(stringstream& ss, SrsMp4DumpContex
     return ss;
 }
 
-SrsMp4VisualSampleEntry::SrsMp4VisualSampleEntry()
+SrsMp4VisualSampleEntry::SrsMp4VisualSampleEntry() : width(0), height(0)
 {
     type = SrsMp4BoxTypeAVC1;
     
@@ -3193,7 +3195,7 @@ stringstream& SrsMp4AvccBox::dumps_detail(stringstream& ss, SrsMp4DumpContext dc
     return ss;
 }
 
-SrsMp4AudioSampleEntry::SrsMp4AudioSampleEntry()
+SrsMp4AudioSampleEntry::SrsMp4AudioSampleEntry() : samplerate(0)
 {
     type = SrsMp4BoxTypeMP4A;
     
@@ -3448,7 +3450,7 @@ stringstream& SrsMp4DecoderSpecificInfo::dumps_detail(stringstream& ss, SrsMp4Du
     return srs_print_bytes(ss, (const char*)&asc[0], (int)asc.size(), dc.indent());
 }
 
-SrsMp4DecoderConfigDescriptor::SrsMp4DecoderConfigDescriptor()
+SrsMp4DecoderConfigDescriptor::SrsMp4DecoderConfigDescriptor() : upStream(0), bufferSizeDB(0), maxBitrate(0), avgBitrate(0)
 {
     tag = SrsMp4ESTagESDecoderConfigDescrTag;
     objectTypeIndication = SrsMp4ObjectTypeForbidden;
@@ -3568,10 +3570,10 @@ int SrsMp4SLConfigDescriptor::decode_payload(SrsBuffer* buf)
     return ret;
 }
 
-SrsMp4ES_Descriptor::SrsMp4ES_Descriptor()
+SrsMp4ES_Descriptor::SrsMp4ES_Descriptor() : ES_ID(0), dependsOn_ES_ID(0), OCR_ES_Id(0)
 {
     tag = SrsMp4ESTagESDescrTag;
-    streamDependenceFlag = URL_Flag = OCRstreamFlag = 0;
+    streamPriority = streamDependenceFlag = URL_Flag = OCRstreamFlag = 0;
 }
 
 SrsMp4ES_Descriptor::~SrsMp4ES_Descriptor()
@@ -5040,12 +5042,14 @@ int SrsMp4SampleManager::load_trak(map<uint64_t, SrsMp4Sample*>& tses, SrsFrameT
             
             uint32_t sample_size = 0;
             if ((ret = stsz->get_sample_size(sample->index, &sample_size)) != ERROR_SUCCESS) {
+                srs_freep(sample);
                 return ret;
             }
             sample_relative_offset += sample_size;
             
             SrsMp4SttsEntry* stts_entry = NULL;
             if ((ret = stts->on_sample(sample->index, &stts_entry)) != ERROR_SUCCESS) {
+                srs_freep(sample);
                 return ret;
             }
             if (previous) {
@@ -5054,6 +5058,7 @@ int SrsMp4SampleManager::load_trak(map<uint64_t, SrsMp4Sample*>& tses, SrsFrameT
             
             SrsMp4CttsEntry* ctts_entry = NULL;
             if (ctts && (ret = ctts->on_sample(sample->index, &ctts_entry)) != ERROR_SUCCESS) {
+                srs_freep(sample);
                 return ret;
             }
             if (ctts_entry) {
@@ -5618,8 +5623,8 @@ int SrsMp4Encoder::write_sample(SrsMp4HandlerType ht, uint16_t ft, uint16_t ct,
     SrsMp4Sample* ps = new SrsMp4Sample();
     
     // For SPS/PPS or ASC, copy it to moov.
-    bool vsh = (ht == SrsMp4HandlerTypeVIDE) && (ct == SrsVideoAvcFrameTraitSequenceHeader);
-    bool ash = (ht == SrsMp4HandlerTypeSOUN) && (ct == SrsAudioAacFrameTraitSequenceHeader);
+    bool vsh = (ht == SrsMp4HandlerTypeVIDE) && (ct == (uint16_t)SrsVideoAvcFrameTraitSequenceHeader);
+    bool ash = (ht == SrsMp4HandlerTypeSOUN) && (ct == (uint16_t)SrsAudioAacFrameTraitSequenceHeader);
     if (vsh || ash) {
         ret = copy_sequence_header(vsh, sample, nb_sample);
         srs_freep(ps);
diff --git a/trunk/src/kernel/srs_kernel_utility.cpp b/trunk/src/kernel/srs_kernel_utility.cpp
index 3cae281cf..05a8ce82e 100644
--- a/trunk/src/kernel/srs_kernel_utility.cpp
+++ b/trunk/src/kernel/srs_kernel_utility.cpp
@@ -920,7 +920,7 @@ int srs_do_create_dir_recursively(string dir)
         // no sign extension
         const uint8_t *in = (const uint8_t*)in_str;
         unsigned bits = 0xff;
-        unsigned v;
+        unsigned v = 0;
         
         while (end - dst > 3) {
             BASE64_DEC_STEP(0);
diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp
index bff6edfe3..91867124d 100644
--- a/trunk/src/libs/srs_librtmp.cpp
+++ b/trunk/src/libs/srs_librtmp.cpp
@@ -126,7 +126,7 @@ struct Context
     // The RTMP handler level buffer, can used to format packet.
     char buffer[1024];
     
-    Context() {
+    Context() : port(0) {
         rtmp = NULL;
         skt = NULL;
         req = NULL;
@@ -664,8 +664,7 @@ extern "C"{
 #ifndef SRS_AUTO_SSL
         // complex handshake requires ssl
         return ERROR_RTMP_HS_SSL_REQUIRE;
-#endif
-        
+#else
         int ret = ERROR_SUCCESS;
         
         srs_assert(rtmp != NULL);
@@ -682,6 +681,7 @@ extern "C"{
         }
         
         return ret;
+#endif
     }
     
     int srs_rtmp_do_simple_handshake(srs_rtmp_t rtmp)
@@ -1579,12 +1579,12 @@ extern "C"{
         }
         
         if (ht == SrsMp4HandlerTypeSOUN) {
-            s->codec = dec->acodec;
+            s->codec = (uint16_t)dec->acodec;
             s->sample_rate = dec->sample_rate;
             s->channels = dec->channels;
             s->sound_bits = dec->sound_bits;
         } else {
-            s->codec = dec->vcodec;
+            s->codec = (uint16_t)dec->vcodec;
         }
         s->handler_type = (uint32_t)ht;
         
@@ -1599,13 +1599,13 @@ extern "C"{
     int32_t srs_mp4_sizeof(srs_mp4_t mp4, srs_mp4_sample_t* s)
     {
         if (s->handler_type == SrsMp4HandlerTypeSOUN) {
-            if (s->codec == SrsAudioCodecIdAAC) {
+            if (s->codec == (uint16_t)SrsAudioCodecIdAAC) {
                 return s->nb_sample + 2;
             }
             return s->nb_sample + 1;
         }
         
-        if (s->codec == SrsVideoCodecIdAVC) {
+        if (s->codec == (uint16_t)SrsVideoCodecIdAVC) {
             return s->nb_sample + 5;
         }
         return s->nb_sample + 1;
@@ -1624,7 +1624,7 @@ extern "C"{
             // E.4.2.1 AUDIODATA, flv_v10_1.pdf, page 3
             p.write_1bytes(uint8_t(s->codec << 4) | uint8_t(s->sample_rate << 2) | uint8_t(s->sound_bits << 1) | s->channels);
             if (s->codec == SrsAudioCodecIdAAC) {
-                p.write_1bytes(uint8_t(s->frame_trait == SrsAudioAacFrameTraitSequenceHeader? 0:1));
+                p.write_1bytes(uint8_t(s->frame_trait == (uint16_t)SrsAudioAacFrameTraitSequenceHeader? 0:1));
             }
             
             p.write_bytes((char*)s->sample, s->nb_sample);
@@ -1632,11 +1632,11 @@ extern "C"{
         }
         
         // E.4.3.1 VIDEODATA, flv_v10_1.pdf, page 5
-        p.write_1bytes(uint8_t(s->frame_type<<4) | s->codec);
+        p.write_1bytes(uint8_t(s->frame_type<<4) | uint8_t(s->codec));
         if (s->codec == SrsVideoCodecIdAVC) {
             *type = SRS_RTMP_TYPE_VIDEO;
             
-            p.write_1bytes(uint8_t(s->frame_trait == SrsVideoAvcFrameTraitSequenceHeader? 0:1));
+            p.write_1bytes(uint8_t(s->frame_trait == (uint16_t)SrsVideoAvcFrameTraitSequenceHeader? 0:1));
             // cts = pts - dts, where dts = flvheader->timestamp.
             uint32_t cts = s->pts - s->dts;
             p.write_3bytes(cts);
@@ -1824,7 +1824,8 @@ extern "C"{
     void srs_flv_lseek(srs_flv_t flv, int64_t offset)
     {
         FlvContext* context = (FlvContext*)flv;
-        context->reader.seek2(offset);
+        int64_t r0 = context->reader.seek2(offset);
+        srs_assert(r0 != -1);
     }
     
     srs_bool srs_flv_is_eof(int error_code)
@@ -2297,9 +2298,6 @@ extern "C"{
         
         uint8_t sound_rate = data[0];
         sound_rate = (sound_rate >> 2) & 0x03;
-        if (sound_rate > 3) {
-            return -1;
-        }
         
         return sound_rate;
     }
@@ -2312,9 +2310,6 @@ extern "C"{
         
         uint8_t sound_size = data[0];
         sound_size = (sound_size >> 1) & 0x01;
-        if (sound_size > 1) {
-            return -1;
-        }
         
         return sound_size;
     }
@@ -2327,9 +2322,6 @@ extern "C"{
         
         uint8_t sound_type = data[0];
         sound_type = sound_type & 0x01;
-        if (sound_type > 1) {
-            return -1;
-        }
         
         return sound_type;
     }
@@ -2618,7 +2610,7 @@ extern "C"{
         
         // packets interval in milliseconds.
         double pi = 0;
-        if (pre_now > starttime) {
+        if (pre_now > starttime && nb_packets > 0) {
             pi = (pre_now - starttime) / (double)nb_packets;
         }
         
diff --git a/trunk/src/libs/srs_librtmp.hpp b/trunk/src/libs/srs_librtmp.hpp
index 231db1ff2..5c3779c06 100644
--- a/trunk/src/libs/srs_librtmp.hpp
+++ b/trunk/src/libs/srs_librtmp.hpp
@@ -32,6 +32,11 @@
  * thread-safe: no
  */
 
+// @see http://blog.csdn.net/win_lin/article/details/7912693
+#ifndef __STDC_FORMAT_MACROS
+    #define __STDC_FORMAT_MACROS
+#endif
+
 /*************************************************************
  **************************************************************
  * Windows SRS-LIBRTMP pre-declare
diff --git a/trunk/src/protocol/srs_protocol_amf0.cpp b/trunk/src/protocol/srs_protocol_amf0.cpp
index 728b6460b..343d0e0e7 100644
--- a/trunk/src/protocol/srs_protocol_amf0.cpp
+++ b/trunk/src/protocol/srs_protocol_amf0.cpp
@@ -203,6 +203,8 @@ void srs_fill_level_spaces(stringstream& ss, int level)
 }
 void srs_amf0_do_print(SrsAmf0Any* any, stringstream& ss, int level)
 {
+    std::ios_base::fmtflags oflags = ss.flags();
+    
     if (any->is_boolean()) {
         ss << "Boolean " << (any->to_boolean()? "true":"false") << endl;
     } else if (any->is_number()) {
@@ -253,6 +255,8 @@ void srs_amf0_do_print(SrsAmf0Any* any, stringstream& ss, int level)
     } else {
         ss << "Unknown" << endl;
     }
+    
+    ss.flags(oflags);
 }
 
 char* SrsAmf0Any::human_print(char** pdata, int* psize)