forked from ProgrammerAndHacker/media-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVideoCodecFactory.cpp
More file actions
75 lines (68 loc) · 1.85 KB
/
VideoCodecFactory.cpp
File metadata and controls
75 lines (68 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "log.h"
#include "VideoCodecFactory.h"
#include "flv1/flv1codec.h"
#include "h263/h263codec.h"
#include "h263/mpeg4codec.h"
#include "h264/h264encoder.h"
#include "h264/h264decoder.h"
#include "vp8/vp8decoder.h"
#include "vp8/vp8encoder.h"
#include "vp6/vp6decoder.h"
#include "vp9/VP9Decoder.h"
VideoDecoder* VideoCodecFactory::CreateDecoder(VideoCodec::Type codec)
{
Log("-CreateVideoDecoder[%d,%s]\n",codec,VideoCodec::GetNameFor(codec));
//Depending on the codec
switch(codec)
{
case VideoCodec::SORENSON:
return new FLV1Decoder();
case VideoCodec::H263_1998:
return new H263Decoder();
case VideoCodec::H263_1996:
return new H263Decoder1996();
case VideoCodec::MPEG4:
return new Mpeg4Decoder();
case VideoCodec::H264:
return new H264Decoder();
case VideoCodec::VP6:
return new VP6Decoder();
case VideoCodec::VP8:
return new VP8Decoder();
case VideoCodec::VP9:
return new VP9Decoder();
default:
Error("Video decoder not found [%d]\n",codec);
}
return NULL;
}
VideoEncoder* VideoCodecFactory::CreateEncoder(VideoCodec::Type codec)
{
//Empty properties
Properties properties;
//Create codec
return CreateEncoder(codec,properties);
}
VideoEncoder* VideoCodecFactory::CreateEncoder(VideoCodec::Type codec,const Properties& properties)
{
Log("-CreateVideoEncoder[%d,%s]\n",codec,VideoCodec::GetNameFor(codec));
//Depending on the codec
switch(codec)
{
case VideoCodec::SORENSON:
return new FLV1Encoder(properties);
case VideoCodec::H263_1998:
return new H263Encoder(properties);
case VideoCodec::H263_1996:
return new H263Encoder1996(properties);
case VideoCodec::MPEG4:
return new Mpeg4Encoder(properties);
case VideoCodec::H264:
return new H264Encoder(properties);
case VideoCodec::VP8:
return new VP8Encoder(properties);
default:
Error("Video Encoder not found\n");
}
return NULL;
}