VT: Update payload value at runtime for SFR

payload type might be re-assigned if there is a modification
in ongoing session.

We need to provide a new payload type in above case.

Merged-in: I9e19a7bb3e0c7849cbb244fd3a3221ce79c4e56d
Change-Id: I9e19a7bb3e0c7849cbb244fd3a3221ce79c4e56d
Signed-off-by: Somraj Mani <som.mani@samsung.com>
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index 22703fc..8e04508 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -835,9 +835,14 @@
 }
 
 status_t StagefrightRecorder::setParamPayloadType(int32_t payloadType) {
-    ALOGV("setParamPayloadType: %x", payloadType);
+    ALOGV("setParamPayloadType: %d", payloadType);
 
     mPayloadType = payloadType;
+
+    if (mStarted && mOutputFormat == OUTPUT_FORMAT_RTP_AVP) {
+        mWriter->updatePayloadType(mPayloadType);
+    }
+
     return OK;
 }
 
diff --git a/media/libstagefright/include/media/stagefright/MediaWriter.h b/media/libstagefright/include/media/stagefright/MediaWriter.h
index a71a474..07af687 100644
--- a/media/libstagefright/include/media/stagefright/MediaWriter.h
+++ b/media/libstagefright/include/media/stagefright/MediaWriter.h
@@ -55,6 +55,8 @@
     virtual int32_t getStartTimeOffsetMs() const { return 0; }
     virtual status_t setNextFd(int /*fd*/) { return INVALID_OPERATION; }
     virtual void updateCVODegrees(int32_t /*cvoDegrees*/) {}
+    virtual void updatePayloadType(int32_t /*payloadType*/) {}
+
 protected:
     virtual ~MediaWriter() {}
     int64_t mMaxFileSizeLimitBytes;
diff --git a/media/libstagefright/rtsp/ARTPWriter.cpp b/media/libstagefright/rtsp/ARTPWriter.cpp
index cef489c..77056a4 100644
--- a/media/libstagefright/rtsp/ARTPWriter.cpp
+++ b/media/libstagefright/rtsp/ARTPWriter.cpp
@@ -1165,6 +1165,11 @@
     mRTPCVODegrees = cvoDegrees;
 }
 
+void ARTPWriter::updatePayloadType(int32_t payloadType) {
+    Mutex::Autolock autoLock(mLock);
+    mPayloadType = payloadType;
+}
+
 static size_t getFrameSize(bool isWide, unsigned FT) {
     static const size_t kFrameSizeNB[8] = {
         95, 103, 118, 134, 148, 159, 204, 244
diff --git a/media/libstagefright/rtsp/ARTPWriter.h b/media/libstagefright/rtsp/ARTPWriter.h
index e11f8df..5419cdf 100644
--- a/media/libstagefright/rtsp/ARTPWriter.h
+++ b/media/libstagefright/rtsp/ARTPWriter.h
@@ -45,6 +45,7 @@
     virtual status_t stop();
     virtual status_t pause();
     void updateCVODegrees(int32_t cvoDegrees);
+    void updatePayloadType(int32_t payloadType);
 
     virtual void onMessageReceived(const sp<AMessage> &msg);
     virtual void setTMMBNInfo(uint32_t opponentID, uint32_t bitrate);