Skip to content

Commit e351816

Browse files
author
Clement Champetier
committed
MediaMetadatasStructures: add metadata for each stream
* All type of stream can have metadata! * Fill these data when add metadata of AVFormatContext of the stream in InputFile::analyse function. * Get these data with getDataMap function corresponding to the structure you want.
1 parent 3d99fa5 commit e351816

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

src/AvTranscoder/File/InputFile.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,31 +89,37 @@ InputFile& InputFile::analyse( ProgressListener& progress, const EAnalyseLevel l
8989
case AVMEDIA_TYPE_VIDEO:
9090
{
9191
_properties.videoStreams.push_back( videoStreamInfo( _formatContext, streamId, progress, level ) );
92+
detail::fillMetadataDictionnary( _formatContext->streams[streamId]->metadata, _properties.videoStreams.back().metadatas );
9293
break;
9394
}
9495
case AVMEDIA_TYPE_AUDIO:
9596
{
9697
_properties.audioStreams.push_back( audioStreamInfo( _formatContext, streamId ) );
98+
detail::fillMetadataDictionnary( _formatContext->streams[streamId]->metadata, _properties.audioStreams.back().metadatas );
9799
break;
98100
}
99101
case AVMEDIA_TYPE_DATA:
100102
{
101103
_properties.dataStreams.push_back( dataStreamInfo( _formatContext, streamId ) );
104+
detail::fillMetadataDictionnary( _formatContext->streams[streamId]->metadata, _properties.dataStreams.back().metadatas );
102105
break;
103106
}
104107
case AVMEDIA_TYPE_SUBTITLE:
105108
{
106109
_properties.subtitleStreams.push_back( subtitleStreamInfo( _formatContext, streamId ) );
110+
detail::fillMetadataDictionnary( _formatContext->streams[streamId]->metadata, _properties.subtitleStreams.back().metadatas );
107111
break;
108112
}
109113
case AVMEDIA_TYPE_ATTACHMENT:
110114
{
111115
_properties.attachementStreams.push_back( attachementStreamInfo( _formatContext, streamId ) );
116+
detail::fillMetadataDictionnary( _formatContext->streams[streamId]->metadata, _properties.attachementStreams.back().metadatas );
112117
break;
113118
}
114119
case AVMEDIA_TYPE_UNKNOWN:
115120
{
116121
_properties.unknownStreams.push_back( unknownStreamInfo( _formatContext, streamId ) );
122+
detail::fillMetadataDictionnary( _formatContext->streams[streamId]->metadata, _properties.unknownStreams.back().metadatas );
117123
break;
118124
}
119125
case AVMEDIA_TYPE_NB:

src/AvTranscoder/Metadatas/MediaMetadatasStructures.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ MetadatasMap VideoProperties::getDataMap() const
101101
detail::add( dataMap, "has B frames", hasBFrames );
102102
detail::add( dataMap, "references frames", referencesFrames );
103103

104+
for( size_t metadataIndex = 0; metadataIndex < metadatas.size(); ++metadataIndex )
105+
{
106+
detail::add( dataMap, metadatas.at( metadataIndex ).first, metadatas.at( metadataIndex ).second );
107+
}
108+
104109
return dataMap;
105110
}
106111

@@ -120,6 +125,10 @@ MetadatasMap AudioProperties::getDataMap() const
120125
detail::add( dataMap, "channel name", channelName );
121126
detail::add( dataMap, "channel description", channelDescription );
122127

128+
for( size_t metadataIndex = 0; metadataIndex < metadatas.size(); ++metadataIndex )
129+
{
130+
detail::add( dataMap, metadatas.at( metadataIndex ).first, metadatas.at( metadataIndex ).second );
131+
}
123132

124133
return dataMap;
125134
}
@@ -130,6 +139,11 @@ MetadatasMap DataProperties::getDataMap() const
130139

131140
detail::add( dataMap, "streamId", streamId );
132141

142+
for( size_t metadataIndex = 0; metadataIndex < metadatas.size(); ++metadataIndex )
143+
{
144+
detail::add( dataMap, metadatas.at( metadataIndex ).first, metadatas.at( metadataIndex ).second );
145+
}
146+
133147
return dataMap;
134148
}
135149

@@ -139,6 +153,11 @@ MetadatasMap SubtitleProperties::getDataMap() const
139153

140154
detail::add( dataMap, "streamId", streamId );
141155

156+
for( size_t metadataIndex = 0; metadataIndex < metadatas.size(); ++metadataIndex )
157+
{
158+
detail::add( dataMap, metadatas.at( metadataIndex ).first, metadatas.at( metadataIndex ).second );
159+
}
160+
142161
return dataMap;
143162
}
144163

@@ -148,6 +167,11 @@ MetadatasMap AttachementProperties::getDataMap() const
148167

149168
detail::add( dataMap, "streamId", streamId );
150169

170+
for( size_t metadataIndex = 0; metadataIndex < metadatas.size(); ++metadataIndex )
171+
{
172+
detail::add( dataMap, metadatas.at( metadataIndex ).first, metadatas.at( metadataIndex ).second );
173+
}
174+
151175
return dataMap;
152176
}
153177

@@ -157,6 +181,11 @@ MetadatasMap UnknownProperties::getDataMap() const
157181

158182
detail::add( dataMap, "streamId", streamId );
159183

184+
for( size_t metadataIndex = 0; metadataIndex < metadatas.size(); ++metadataIndex )
185+
{
186+
detail::add( dataMap, metadatas.at( metadataIndex ).first, metadatas.at( metadataIndex ).second );
187+
}
188+
160189
return dataMap;
161190
}
162191

src/AvTranscoder/Metadatas/MediaMetadatasStructures.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ struct VideoProperties
8585
std::vector< std::pair< char, bool > > gopStructure;
8686
std::vector<Channel> channels;
8787

88+
MetadatasMap metadatas;
89+
8890
public:
8991
MetadatasMap getDataMap() const;
9092
};
@@ -103,13 +105,16 @@ struct AudioProperties
103105
size_t channels;
104106
size_t bit_rate;
105107

108+
MetadatasMap metadatas;
109+
106110
public:
107111
MetadatasMap getDataMap() const;
108112
};
109113

110114
struct DataProperties
111115
{
112116
size_t streamId;
117+
MetadatasMap metadatas;
113118

114119
public:
115120
MetadatasMap getDataMap() const;
@@ -118,6 +123,7 @@ struct DataProperties
118123
struct SubtitleProperties
119124
{
120125
size_t streamId;
126+
MetadatasMap metadatas;
121127

122128
public:
123129
MetadatasMap getDataMap() const;
@@ -126,6 +132,7 @@ struct SubtitleProperties
126132
struct AttachementProperties
127133
{
128134
size_t streamId;
135+
MetadatasMap metadatas;
129136

130137
public:
131138
MetadatasMap getDataMap() const;
@@ -134,6 +141,7 @@ struct AttachementProperties
134141
struct UnknownProperties
135142
{
136143
size_t streamId;
144+
MetadatasMap metadatas;
137145

138146
public:
139147
MetadatasMap getDataMap() const;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy