@@ -801,6 +801,69 @@ std::string get_stream_json_metadata(
801801
802802 std::map<std::string, std::string> map;
803803
804+ if (streamMetadata.durationSecondsFromHeader .has_value ()) {
805+ map[" durationSecondsFromHeader" ] =
806+ std::to_string (*streamMetadata.durationSecondsFromHeader );
807+ }
808+ if (streamMetadata.bitRate .has_value ()) {
809+ map[" bitRate" ] = std::to_string (*streamMetadata.bitRate );
810+ }
811+ if (streamMetadata.numFramesFromContent .has_value ()) {
812+ map[" numFramesFromContent" ] =
813+ std::to_string (*streamMetadata.numFramesFromContent );
814+ }
815+ if (streamMetadata.numFramesFromHeader .has_value ()) {
816+ map[" numFramesFromHeader" ] =
817+ std::to_string (*streamMetadata.numFramesFromHeader );
818+ }
819+ if (streamMetadata.beginStreamSecondsFromHeader .has_value ()) {
820+ map[" beginStreamSecondsFromHeader" ] =
821+ std::to_string (*streamMetadata.beginStreamSecondsFromHeader );
822+ }
823+ if (streamMetadata.beginStreamPtsSecondsFromContent .has_value ()) {
824+ map[" beginStreamSecondsFromContent" ] =
825+ std::to_string (*streamMetadata.beginStreamPtsSecondsFromContent );
826+ }
827+ if (streamMetadata.endStreamPtsSecondsFromContent .has_value ()) {
828+ map[" endStreamSecondsFromContent" ] =
829+ std::to_string (*streamMetadata.endStreamPtsSecondsFromContent );
830+ }
831+ if (streamMetadata.codecName .has_value ()) {
832+ map[" codec" ] = quoteValue (streamMetadata.codecName .value ());
833+ }
834+ if (streamMetadata.width .has_value ()) {
835+ map[" width" ] = std::to_string (*streamMetadata.width );
836+ }
837+ if (streamMetadata.height .has_value ()) {
838+ map[" height" ] = std::to_string (*streamMetadata.height );
839+ }
840+ if (streamMetadata.sampleAspectRatio .has_value ()) {
841+ map[" sampleAspectRatioNum" ] =
842+ std::to_string ((*streamMetadata.sampleAspectRatio ).num );
843+ map[" sampleAspectRatioDen" ] =
844+ std::to_string ((*streamMetadata.sampleAspectRatio ).den );
845+ }
846+ if (streamMetadata.averageFpsFromHeader .has_value ()) {
847+ map[" averageFpsFromHeader" ] =
848+ std::to_string (*streamMetadata.averageFpsFromHeader );
849+ }
850+ if (streamMetadata.sampleRate .has_value ()) {
851+ map[" sampleRate" ] = std::to_string (*streamMetadata.sampleRate );
852+ }
853+ if (streamMetadata.numChannels .has_value ()) {
854+ map[" numChannels" ] = std::to_string (*streamMetadata.numChannels );
855+ }
856+ if (streamMetadata.sampleFormat .has_value ()) {
857+ map[" sampleFormat" ] = quoteValue (streamMetadata.sampleFormat .value ());
858+ }
859+ if (streamMetadata.mediaType == AVMEDIA_TYPE_VIDEO) {
860+ map[" mediaType" ] = quoteValue (" video" );
861+ } else if (streamMetadata.mediaType == AVMEDIA_TYPE_AUDIO) {
862+ map[" mediaType" ] = quoteValue (" audio" );
863+ } else {
864+ map[" mediaType" ] = quoteValue (" other" );
865+ }
866+
804867 // Check whether content-based metadata is available for this stream.
805868 // In exact mode: content-based metadata exists for all streams.
806869 // In approximate mode: content-based metadata does not exist for any stream.
@@ -812,153 +875,27 @@ std::string get_stream_json_metadata(
812875 if ((seekMode != SeekMode::custom_frame_mappings) ||
813876 (seekMode == SeekMode::custom_frame_mappings &&
814877 stream_index == activeStreamIndex)) {
815- if (streamMetadata.durationSecondsFromHeader .has_value ()) {
816- map[" durationSecondsFromHeader" ] =
817- std::to_string (*streamMetadata.durationSecondsFromHeader );
818- }
819878 if (streamMetadata.getDurationSeconds (seekMode).has_value ()) {
820879 map[" durationSeconds" ] =
821880 std::to_string (streamMetadata.getDurationSeconds (seekMode).value ());
822881 }
823- if (streamMetadata.bitRate .has_value ()) {
824- map[" bitRate" ] = std::to_string (*streamMetadata.bitRate );
825- }
826- if (streamMetadata.numFramesFromContent .has_value ()) {
827- map[" numFramesFromContent" ] =
828- std::to_string (*streamMetadata.numFramesFromContent );
829- }
830- if (streamMetadata.numFramesFromHeader .has_value ()) {
831- map[" numFramesFromHeader" ] =
832- std::to_string (*streamMetadata.numFramesFromHeader );
833- }
834882 if (streamMetadata.getNumFrames (seekMode).has_value ()) {
835883 map[" numFrames" ] =
836884 std::to_string (streamMetadata.getNumFrames (seekMode).value ());
837885 }
838-
839- if (streamMetadata.beginStreamSecondsFromHeader .has_value ()) {
840- map[" beginStreamSecondsFromHeader" ] =
841- std::to_string (*streamMetadata.beginStreamSecondsFromHeader );
842- }
843- if (streamMetadata.beginStreamPtsSecondsFromContent .has_value ()) {
844- map[" beginStreamSecondsFromContent" ] =
845- std::to_string (*streamMetadata.beginStreamPtsSecondsFromContent );
846- }
847886 map[" beginStreamSeconds" ] =
848887 std::to_string (streamMetadata.getBeginStreamSeconds (seekMode));
849- if (streamMetadata.endStreamPtsSecondsFromContent .has_value ()) {
850- map[" endStreamSecondsFromContent" ] =
851- std::to_string (*streamMetadata.endStreamPtsSecondsFromContent );
852- }
853888 if (streamMetadata.getEndStreamSeconds (seekMode).has_value ()) {
854889 map[" endStreamSeconds" ] =
855890 std::to_string (streamMetadata.getEndStreamSeconds (seekMode).value ());
856891 }
857- if (streamMetadata.codecName .has_value ()) {
858- map[" codec" ] = quoteValue (streamMetadata.codecName .value ());
859- }
860- if (streamMetadata.width .has_value ()) {
861- map[" width" ] = std::to_string (*streamMetadata.width );
862- }
863- if (streamMetadata.height .has_value ()) {
864- map[" height" ] = std::to_string (*streamMetadata.height );
865- }
866- if (streamMetadata.sampleAspectRatio .has_value ()) {
867- map[" sampleAspectRatioNum" ] =
868- std::to_string ((*streamMetadata.sampleAspectRatio ).num );
869- map[" sampleAspectRatioDen" ] =
870- std::to_string ((*streamMetadata.sampleAspectRatio ).den );
871- }
872- if (streamMetadata.averageFpsFromHeader .has_value ()) {
873- map[" averageFpsFromHeader" ] =
874- std::to_string (*streamMetadata.averageFpsFromHeader );
875- }
876892 if (streamMetadata.getAverageFps (seekMode).has_value ()) {
877893 map[" averageFps" ] =
878894 std::to_string (streamMetadata.getAverageFps (seekMode).value ());
879895 }
880- if (streamMetadata.sampleRate .has_value ()) {
881- map[" sampleRate" ] = std::to_string (*streamMetadata.sampleRate );
882- }
883- if (streamMetadata.numChannels .has_value ()) {
884- map[" numChannels" ] = std::to_string (*streamMetadata.numChannels );
885- }
886- if (streamMetadata.sampleFormat .has_value ()) {
887- map[" sampleFormat" ] = quoteValue (streamMetadata.sampleFormat .value ());
888- }
889- if (streamMetadata.mediaType == AVMEDIA_TYPE_VIDEO) {
890- map[" mediaType" ] = quoteValue (" video" );
891- } else if (streamMetadata.mediaType == AVMEDIA_TYPE_AUDIO) {
892- map[" mediaType" ] = quoteValue (" audio" );
893- } else {
894- map[" mediaType" ] = quoteValue (" other" );
895- }
896- return mapToJson (map);
897- } else {
898- if (streamMetadata.durationSecondsFromHeader .has_value ()) {
899- map[" durationSecondsFromHeader" ] =
900- std::to_string (*streamMetadata.durationSecondsFromHeader );
901- }
902- if (streamMetadata.bitRate .has_value ()) {
903- map[" bitRate" ] = std::to_string (*streamMetadata.bitRate );
904- }
905- if (streamMetadata.numFramesFromContent .has_value ()) {
906- map[" numFramesFromContent" ] =
907- std::to_string (*streamMetadata.numFramesFromContent );
908- }
909- if (streamMetadata.numFramesFromHeader .has_value ()) {
910- map[" numFramesFromHeader" ] =
911- std::to_string (*streamMetadata.numFramesFromHeader );
912- }
913- if (streamMetadata.beginStreamSecondsFromHeader .has_value ()) {
914- map[" beginStreamSecondsFromHeader" ] =
915- std::to_string (*streamMetadata.beginStreamSecondsFromHeader );
916- }
917- if (streamMetadata.beginStreamPtsSecondsFromContent .has_value ()) {
918- map[" beginStreamSecondsFromContent" ] =
919- std::to_string (*streamMetadata.beginStreamPtsSecondsFromContent );
920- }
921- if (streamMetadata.endStreamPtsSecondsFromContent .has_value ()) {
922- map[" endStreamSecondsFromContent" ] =
923- std::to_string (*streamMetadata.endStreamPtsSecondsFromContent );
924- }
925- if (streamMetadata.codecName .has_value ()) {
926- map[" codec" ] = quoteValue (streamMetadata.codecName .value ());
927- }
928- if (streamMetadata.width .has_value ()) {
929- map[" width" ] = std::to_string (*streamMetadata.width );
930- }
931- if (streamMetadata.height .has_value ()) {
932- map[" height" ] = std::to_string (*streamMetadata.height );
933- }
934- if (streamMetadata.sampleAspectRatio .has_value ()) {
935- map[" sampleAspectRatioNum" ] =
936- std::to_string ((*streamMetadata.sampleAspectRatio ).num );
937- map[" sampleAspectRatioDen" ] =
938- std::to_string ((*streamMetadata.sampleAspectRatio ).den );
939- }
940- if (streamMetadata.averageFpsFromHeader .has_value ()) {
941- map[" averageFpsFromHeader" ] =
942- std::to_string (*streamMetadata.averageFpsFromHeader );
943- }
944- if (streamMetadata.sampleRate .has_value ()) {
945- map[" sampleRate" ] = std::to_string (*streamMetadata.sampleRate );
946- }
947- if (streamMetadata.numChannels .has_value ()) {
948- map[" numChannels" ] = std::to_string (*streamMetadata.numChannels );
949- }
950- if (streamMetadata.sampleFormat .has_value ()) {
951- map[" sampleFormat" ] = quoteValue (streamMetadata.sampleFormat .value ());
952- }
953- if (streamMetadata.mediaType == AVMEDIA_TYPE_VIDEO) {
954- map[" mediaType" ] = quoteValue (" video" );
955- } else if (streamMetadata.mediaType == AVMEDIA_TYPE_AUDIO) {
956- map[" mediaType" ] = quoteValue (" audio" );
957- } else {
958- map[" mediaType" ] = quoteValue (" other" );
959- }
960- return mapToJson (map);
961896 }
897+
898+ return mapToJson (map);
962899}
963900
964901// Returns version information about the various FFMPEG libraries that are
0 commit comments