925549bad40793de026c5b49b03684063d23ffab
[mediacube.git] /
1 package user.jobengine.server.steps;\r
2 \r
3 import java.nio.file.Path;\r
4 import java.nio.file.Paths;\r
5 \r
6 import org.apache.logging.log4j.LogManager;\r
7 import org.apache.logging.log4j.Logger;\r
8 import org.apache.logging.log4j.Marker;\r
9 import org.apache.logging.log4j.MarkerManager;\r
10 \r
11 import user.commons.StoreUri;\r
12 import user.commons.mediaarea.MediaArea;\r
13 \r
14 public class FILEZILLA_PASARESTORETransferToStep extends TransferStep {\r
15         private static final Logger logger = LogManager.getLogger();\r
16         private static final String CODEC_PROFILE_HIGH = "HIGH";\r
17         private static final String CODEC_PROFILE_MAIN = "MAIN";\r
18         private static final String CODEC_PROFILE_422 = "4:2:2";\r
19         private static final String DISPLAY_ASPECT_16_9 = "16:9";\r
20         private static final String DISPLAY_ASPECT_4_3 = "4:3";\r
21         private StoreUri sourceStoreUri;\r
22         private String sourceFileName;\r
23 \r
24         @Override\r
25         @StepEntry\r
26         public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
27                 this.sourceStoreUri = sourceStoreUri;\r
28                 this.sourceFileName = sourceFileName;\r
29                 logMediaProfile();\r
30                 Object[] result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
31                 return result;\r
32         }\r
33 \r
34         private boolean isHD(MediaArea mi) {\r
35                 return mi.getHeight() == 1080;\r
36         }\r
37 \r
38         private boolean isSD_HIGH_16_9(MediaArea mi) {\r
39                 String formatProfileName = mi.getFormatProfileName();\r
40                 return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_16_9.equals(mi.getDisplayAspect());\r
41         }\r
42 \r
43         private boolean isSD_HIGH_4_3(MediaArea mi) {\r
44                 String formatProfileName = mi.getFormatProfileName();\r
45                 return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_4_3.equals(mi.getDisplayAspect());\r
46         }\r
47 \r
48         private boolean isSD_MAIN_422(MediaArea mi) {\r
49                 String formatProfileName = mi.getFormatProfileName();\r
50                 return mi.getHeight() < 650 && (formatProfileName.contains(CODEC_PROFILE_MAIN) || formatProfileName.contains(CODEC_PROFILE_422));\r
51         }\r
52 \r
53         protected void logMediaProfile() {\r
54                 Marker marker = MarkerManager.getMarker("MEDIAPROFILE");\r
55                 try {\r
56                         Path filePath = Paths.get(sourceStoreUri.toString(true), sourceFileName);\r
57                         MediaArea mi = new MediaArea(filePath);\r
58                         mi.process();\r
59                         logger.info(marker, "{} data : {} {} {}", sourceFileName, mi.getFormatProfileName(), mi.getHeight(), mi.getDisplayAspect());\r
60 \r
61                         if (isHD(mi)) {\r
62                                 logger.info(marker, "{} is MOVED_HD", sourceFileName);\r
63                                 return;\r
64                         }\r
65 \r
66                         if (isSD_HIGH_16_9(mi)) {\r
67                                 logger.info(marker, "{} is CONVSD16_9", sourceFileName);\r
68                                 return;\r
69                         }\r
70 \r
71                         if (isSD_HIGH_4_3(mi)) {\r
72                                 logger.info(marker, "{} is CONVSD4_3", sourceFileName);\r
73                                 return;\r
74                         }\r
75 \r
76                         if (isSD_MAIN_422(mi)) {\r
77                                 logger.info(marker, "{} is MOVED_SD", sourceFileName);\r
78                                 return;\r
79                         }\r
80                 } catch (Exception e) {\r
81                         logger.error(marker, e.getMessage());\r
82                 }\r
83         }\r
84 \r
85 }\r