Skip to content

Commit 19354a1

Browse files
author
Clement Champetier
committed
PixelProperties: add private function to refactore try/catch of getPropertiesAsMap
1 parent 6295036 commit 19354a1

File tree

2 files changed

+103
-67
lines changed

2 files changed

+103
-67
lines changed

src/AvTranscoder/mediaProperty/PixelProperties.cpp

Lines changed: 88 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -223,79 +223,100 @@ PropertiesMap PixelProperties::getPropertiesAsMap() const
223223
{
224224
PropertiesMap dataMap;
225225

226-
detail::add( dataMap, "pixelName", getPixelName() );
227-
detail::add( dataMap, "pixelFormatName", getPixelFormatName() );
228-
detail::add( dataMap, "bitDepth", getBitsPerPixel() );
229-
detail::add( dataMap, "nbComponents", getNbComponents() );
230-
detail::add( dataMap, "chromaWidth", getChromaWidth() );
231-
detail::add( dataMap, "chromaHeight", getChromaHeight() );
232-
233-
std::string colorComponents;
234-
switch( getColorComponents() )
226+
addProperty( dataMap, "pixelName", &PixelProperties::getPixelName );
227+
addProperty( dataMap, "pixelFormatName", &PixelProperties::getPixelFormatName );
228+
addProperty( dataMap, "bitDepth", &PixelProperties::getBitsPerPixel );
229+
addProperty( dataMap, "nbComponents", &PixelProperties::getNbComponents );
230+
addProperty( dataMap, "chromaWidth", &PixelProperties::getChromaWidth );
231+
addProperty( dataMap, "chromaHeight", &PixelProperties::getChromaHeight );
232+
233+
try
235234
{
236-
case eComponentGray:
237-
colorComponents = "gray";
238-
break;
239-
case eComponentRgb:
240-
colorComponents = "RGB";
241-
break;
242-
case eComponentYuvJPEG:
243-
colorComponents = "YUVJPEG";
244-
break;
245-
case eComponentYuvA:
246-
colorComponents = "YUVA";
247-
break;
248-
case eComponentYuv:
249-
colorComponents = "YUV";
250-
break;
235+
std::string colorComponents;
236+
switch( getColorComponents() )
237+
{
238+
case eComponentGray:
239+
colorComponents = "gray";
240+
break;
241+
case eComponentRgb:
242+
colorComponents = "RGB";
243+
break;
244+
case eComponentYuvJPEG:
245+
colorComponents = "YUVJPEG";
246+
break;
247+
case eComponentYuvA:
248+
colorComponents = "YUVA";
249+
break;
250+
case eComponentYuv:
251+
colorComponents = "YUV";
252+
break;
253+
}
254+
detail::add( dataMap, "colorComponents", colorComponents );
251255
}
252-
detail::add( dataMap, "colorComponents", colorComponents );
256+
catch( const std::exception& e )
257+
{
258+
detail::add( dataMap, "colorComponents", e.what() );
259+
}
260+
261+
try
262+
{
263+
std::string subsampling;
264+
switch( getSubsampling() )
265+
{
266+
case eSubsampling440:
267+
subsampling = "440";
268+
break;
269+
case eSubsampling422:
270+
subsampling = "422";
271+
break;
272+
case eSubsampling420:
273+
subsampling = "420";
274+
break;
275+
case eSubsampling411:
276+
subsampling = "411";
277+
break;
278+
case eSubsampling410:
279+
subsampling = "410";
280+
break;
281+
case eSubsamplingNone:
282+
subsampling = "None";
283+
break;
284+
}
285+
detail::add( dataMap, "subsampling", subsampling );
286+
}
287+
catch( const std::exception& e )
288+
{
289+
detail::add( dataMap, "subsampling", e.what() );
290+
}
291+
292+
addProperty( dataMap, "isBigEndian", &PixelProperties::isBigEndian );
293+
addProperty( dataMap, "hasAlpha", &PixelProperties::hasAlpha );
294+
addProperty( dataMap, "isPlanar", &PixelProperties::isPlanar );
295+
addProperty( dataMap, "isIndexedColors", &PixelProperties::isIndexedColors );
296+
addProperty( dataMap, "bitWiseAcked", &PixelProperties::isBitWisePacked );
297+
addProperty( dataMap, "isHardwareAccelerated", &PixelProperties::isHardwareAccelerated );
298+
addProperty( dataMap, "rgbPixel", &PixelProperties::isRgbPixelData );
299+
addProperty( dataMap, "isPseudoPaletted", &PixelProperties::isPseudoPaletted );
253300

254-
std::string subsampling;
255-
switch( getSubsampling() )
301+
try
256302
{
257-
case eSubsampling440:
258-
subsampling = "440";
259-
break;
260-
case eSubsampling422:
261-
subsampling = "422";
262-
break;
263-
case eSubsampling420:
264-
subsampling = "420";
265-
break;
266-
case eSubsampling411:
267-
subsampling = "411";
268-
break;
269-
case eSubsampling410:
270-
subsampling = "410";
271-
break;
272-
case eSubsamplingNone:
273-
subsampling = "None";
274-
break;
303+
std::vector<Channel> channels = getChannels();
304+
for( size_t channelIndex = 0; channelIndex < channels.size(); ++channelIndex )
305+
{
306+
std::stringstream channelName;
307+
channelName << "channel_" << channels.at( channelIndex ).id;
308+
309+
std::stringstream channelValue;
310+
channelValue << "chromaHeight " << channels.at( channelIndex ).chromaHeight;
311+
channelValue << " - ";
312+
channelValue << "bitStep " << channels.at( channelIndex ).bitStep;
313+
314+
detail::add( dataMap, channelName.str(), channelValue.str() );
315+
}
275316
}
276-
detail::add( dataMap, "subsampling", subsampling );
277-
278-
detail::add( dataMap, "isBigEndian", isBigEndian() );
279-
detail::add( dataMap, "hasAlpha", hasAlpha() );
280-
detail::add( dataMap, "isPlanar", isPlanar() );
281-
detail::add( dataMap, "isIndexedColors", isIndexedColors() );
282-
detail::add( dataMap, "bitWiseAcked", isBitWisePacked() );
283-
detail::add( dataMap, "isHardwareAccelerated", isHardwareAccelerated() );
284-
detail::add( dataMap, "rgbPixel", isRgbPixelData() );
285-
detail::add( dataMap, "isPseudoPaletted", isPseudoPaletted() );
286-
287-
std::vector<Channel> channels = getChannels();
288-
for( size_t channelIndex = 0; channelIndex < channels.size(); ++channelIndex )
317+
catch( const std::exception& e )
289318
{
290-
std::stringstream channelName;
291-
channelName << "channel_" << channels.at( channelIndex ).id;
292-
293-
std::stringstream channelValue;
294-
channelValue << "chromaHeight " << channels.at( channelIndex ).chromaHeight;
295-
channelValue << " - ";
296-
channelValue << "bitStep " << channels.at( channelIndex ).bitStep;
297-
298-
detail::add( dataMap, channelName.str(), channelValue.str() );
319+
detail::add( dataMap, "channels", e.what() );
299320
}
300321

301322
return dataMap;

src/AvTranscoder/mediaProperty/PixelProperties.hpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,21 @@ class AvExport PixelProperties
8484
private:
8585
void init( const AVPixelFormat avPixelFormat );
8686

87+
#ifndef SWIG
88+
template<typename T>
89+
void addProperty( PropertiesMap& dataMap, const std::string& key, T (PixelProperties::*getter)(void) const ) const
90+
{
91+
try
92+
{
93+
detail::add( dataMap, key, (this->*getter)() );
94+
}
95+
catch( const std::exception& e )
96+
{
97+
detail::add( dataMap, key, e.what() );
98+
}
99+
}
100+
#endif
101+
87102
private:
88103
AVPixelFormat _pixelFormat;
89104
const AVPixFmtDescriptor* _pixelDesc; ///< Has link (no ownership)

0 commit comments

Comments
 (0)