6161#include <stdlib.h>
6262#include <signal.h>
6363
64- #include <glib.h>
6564#include <jansson.h>
6665
6766#include "../debug.h"
@@ -83,6 +82,7 @@ gboolean janus_log_timestamps = FALSE;
8382gboolean janus_log_colors = TRUE;
8483
8584static janus_pp_frame_packet * list = NULL , * last = NULL ;
85+ static char * metadata = NULL ;
8686static int working = 0 ;
8787
8888static int post_reset_trigger = 200 ;
@@ -126,6 +126,10 @@ int main(int argc, char *argv[])
126126 janus_log_level = val ;
127127 JANUS_LOG (LOG_INFO , "Logging level: %d\n" , janus_log_level );
128128 }
129+ if (g_getenv ("JANUS_PPREC_METADATA" ) != NULL ) {
130+ metadata = g_strdup (g_getenv ("JANUS_PPREC_METADATA" ));
131+ JANUS_LOG (LOG_INFO , "Metadata: %d\n" , janus_log_level );
132+ }
129133 if (g_getenv ("JANUS_PPREC_POSTRESETTRIGGER" ) != NULL ) {
130134 int val = atoi (g_getenv ("JANUS_PPREC_POSTRESETTRIGGER" ));
131135 if (val >= 0 )
@@ -204,8 +208,9 @@ int main(int argc, char *argv[])
204208 if (!jsonheader_only )
205209 JANUS_LOG (LOG_INFO , "Pre-parsing file to generate ordered index...\n" );
206210 gboolean parsed_header = FALSE;
207- int video = 0 , data = 0 ;
208- int opus = 0 , g711 = 0 , g722 = 0 , vp8 = 0 , vp9 = 0 , h264 = 0 ;
211+ gboolean video = FALSE, data = FALSE;
212+ gboolean opus = FALSE, g711 = FALSE, g722 = FALSE,
213+ vp8 = FALSE, vp9 = FALSE, h264 = FALSE;
209214 gint64 c_time = 0 , w_time = 0 ;
210215 int bytes = 0 , skip = 0 ;
211216 long offset = 0 ;
@@ -246,26 +251,26 @@ int main(int argc, char *argv[])
246251 bytes = fread (prebuffer , sizeof (char ), 5 , file );
247252 if (prebuffer [0 ] == 'v' ) {
248253 JANUS_LOG (LOG_INFO , "This is a video recording, assuming VP8\n" );
249- video = 1 ;
250- data = 0 ;
251- vp8 = 1 ;
254+ video = TRUE ;
255+ data = FALSE ;
256+ vp8 = TRUE ;
252257 if (extension && strcasecmp (extension , ".webm" )) {
253258 JANUS_LOG (LOG_ERR , "VP8 RTP packets can only be converted to a .webm file\n" );
254259 exit (1 );
255260 }
256261 } else if (prebuffer [0 ] == 'a' ) {
257262 JANUS_LOG (LOG_INFO , "This is an audio recording, assuming Opus\n" );
258- video = 0 ;
259- data = 0 ;
260- opus = 1 ;
263+ video = FALSE ;
264+ data = FALSE ;
265+ opus = TRUE ;
261266 if (extension && strcasecmp (extension , ".opus" )) {
262267 JANUS_LOG (LOG_ERR , "Opus RTP packets can only be converted to an .opus file\n" );
263268 exit (1 );
264269 }
265270 } else if (prebuffer [0 ] == 'd' ) {
266271 JANUS_LOG (LOG_INFO , "This is a text data recording, assuming SRT\n" );
267- video = 0 ;
268- data = 1 ;
272+ video = FALSE ;
273+ data = TRUE ;
269274 if (extension && strcasecmp (extension , ".srt" )) {
270275 JANUS_LOG (LOG_ERR , "Data channel packets can only be converted to a .srt file\n" );
271276 exit (1 );
@@ -316,14 +321,14 @@ int main(int argc, char *argv[])
316321 }
317322 const char * t = json_string_value (type );
318323 if (!strcasecmp (t , "v" )) {
319- video = 1 ;
320- data = 0 ;
324+ video = TRUE ;
325+ data = FALSE ;
321326 } else if (!strcasecmp (t , "a" )) {
322- video = 0 ;
323- data = 0 ;
327+ video = FALSE ;
328+ data = FALSE ;
324329 } else if (!strcasecmp (t , "d" )) {
325- video = 0 ;
326- data = 1 ;
330+ video = FALSE ;
331+ data = TRUE ;
327332 } else {
328333 JANUS_LOG (LOG_WARN , "Unsupported recording type '%s' in info header...\n" , t );
329334 exit (1 );
@@ -337,19 +342,19 @@ int main(int argc, char *argv[])
337342 const char * c = json_string_value (codec );
338343 if (video ) {
339344 if (!strcasecmp (c , "vp8" )) {
340- vp8 = 1 ;
345+ vp8 = TRUE ;
341346 if (extension && strcasecmp (extension , ".webm" )) {
342347 JANUS_LOG (LOG_ERR , "VP8 RTP packets can only be converted to a .webm file\n" );
343348 exit (1 );
344349 }
345350 } else if (!strcasecmp (c , "vp9" )) {
346- vp9 = 1 ;
351+ vp9 = TRUE ;
347352 if (extension && strcasecmp (extension , ".webm" )) {
348353 JANUS_LOG (LOG_ERR , "VP9 RTP packets can only be converted to a .webm file\n" );
349354 exit (1 );
350355 }
351356 } else if (!strcasecmp (c , "h264" )) {
352- h264 = 1 ;
357+ h264 = TRUE ;
353358 if (extension && strcasecmp (extension , ".mp4" )) {
354359 JANUS_LOG (LOG_ERR , "H.264 RTP packets can only be converted to a .mp4 file\n" );
355360 exit (1 );
@@ -360,19 +365,19 @@ int main(int argc, char *argv[])
360365 }
361366 } else if (!video && !data ) {
362367 if (!strcasecmp (c , "opus" )) {
363- opus = 1 ;
368+ opus = TRUE ;
364369 if (extension && strcasecmp (extension , ".opus" )) {
365370 JANUS_LOG (LOG_ERR , "Opus RTP packets can only be converted to a .opus file\n" );
366371 exit (1 );
367372 }
368373 } else if (!strcasecmp (c , "g711" ) || !strcasecmp (c , "pcmu" ) || !strcasecmp (c , "pcma" )) {
369- g711 = 1 ;
374+ g711 = TRUE ;
370375 if (extension && strcasecmp (extension , ".wav" )) {
371376 JANUS_LOG (LOG_ERR , "G.711 RTP packets can only be converted to a .wav file\n" );
372377 exit (1 );
373378 }
374379 } else if (!strcasecmp (c , "g722" )) {
375- g722 = 1 ;
380+ g722 = TRUE ;
376381 if (extension && strcasecmp (extension , ".wav" )) {
377382 JANUS_LOG (LOG_ERR , "G.722 RTP packets can only be converted to a .wav file\n" );
378383 exit (1 );
@@ -410,6 +415,10 @@ int main(int argc, char *argv[])
410415 JANUS_LOG (LOG_INFO , " -- Codec: %s\n" , c );
411416 JANUS_LOG (LOG_INFO , " -- Created: %" SCNi64 "\n" , c_time );
412417 JANUS_LOG (LOG_INFO , " -- Written: %" SCNi64 "\n" , w_time );
418+ /* Save the original string as a metadata to save in the media container, if possible */
419+ if (metadata == NULL )
420+ metadata = g_strdup (prebuffer );
421+ json_decref (info );
413422 }
414423 } else {
415424 JANUS_LOG (LOG_ERR , "Invalid header...\n" );
@@ -732,34 +741,34 @@ int main(int argc, char *argv[])
732741
733742 if (!video && !data ) {
734743 if (opus ) {
735- if (janus_pp_opus_create (destination ) < 0 ) {
744+ if (janus_pp_opus_create (destination , metadata ) < 0 ) {
736745 JANUS_LOG (LOG_ERR , "Error creating .opus file...\n" );
737746 exit (1 );
738747 }
739748 } else if (g711 ) {
740- if (janus_pp_g711_create (destination ) < 0 ) {
749+ if (janus_pp_g711_create (destination , metadata ) < 0 ) {
741750 JANUS_LOG (LOG_ERR , "Error creating .wav file...\n" );
742751 exit (1 );
743752 }
744753 } else if (g722 ) {
745- if (janus_pp_g722_create (destination ) < 0 ) {
754+ if (janus_pp_g722_create (destination , metadata ) < 0 ) {
746755 JANUS_LOG (LOG_ERR , "Error creating .wav file...\n" );
747756 exit (1 );
748757 }
749758 }
750759 } else if (data ) {
751- if (janus_pp_srt_create (destination ) < 0 ) {
760+ if (janus_pp_srt_create (destination , metadata ) < 0 ) {
752761 JANUS_LOG (LOG_ERR , "Error creating .srt file...\n" );
753762 exit (1 );
754763 }
755764 } else {
756765 if (vp8 || vp9 ) {
757- if (janus_pp_webm_create (destination , vp8 ) < 0 ) {
766+ if (janus_pp_webm_create (destination , metadata , vp8 ) < 0 ) {
758767 JANUS_LOG (LOG_ERR , "Error creating .webm file...\n" );
759768 exit (1 );
760769 }
761770 } else if (h264 ) {
762- if (janus_pp_h264_create (destination ) < 0 ) {
771+ if (janus_pp_h264_create (destination , metadata ) < 0 ) {
763772 JANUS_LOG (LOG_ERR , "Error creating .mp4 file...\n" );
764773 exit (1 );
765774 }
0 commit comments