public Mp4ContainerSettings(IAudioSettings audio, IVideoSettings video, IWatermarkSettings watermark)
		{
			FileNameExtension = "mp4";
			Audio = audio;
			Video = video;
			Watermark = watermark;
			AllowedMetaData = new List<string>
			               	{
			               		"Title",
								"Artist",
								"AlbumArtist",
			               		"Album",
			               		"Grouping",
			               		"Composer",
			               		"Year",
								"Track",
			               		"Comment",
								"Genre",
								"Copyright",
								"Description",
								"Synopsis",
								"Show",
								"EpisodeId",
								"Network",
								"Lyrics",
			               	};
		}
		public FlvContainerSettings(IAudioSettings audio, IVideoSettings video, IWatermarkSettings watermark)
		{
			FileNameExtension = "flv";
			Audio = audio;

			//These are the only 2 supported audio codecs by flv
			//Flash 9 is required for AAC support
			if (!(Audio.CodecName == "libmp3lame" || Audio.CodecName == "libvo_aacenc"))
			{
				Audio.CodecName = "libmp3lame";
			}

			//Only the following frequencies are supported by flv when using mp3
			if (Audio.CodecName == "libmp3lame")
			{
				if (!(Audio.Frequency == 11025 || Audio.Frequency == 22050 || Audio.Frequency == 44100))
				{
					Audio.Frequency = 22050;
				}
			}

			Video = video;
			Watermark = watermark;

			AllowedMetaData = new List<string>();
		}
        private void DoAddWatermark(PdfDocument pdfDocument, IWatermarkSettings watermarkSettings, Func <PdfPage, PdfDocument, PdfCanvas> GetPdfCanvas)
        {
            if (!watermarkSettings.Enabled)
            {
                return;
            }

            _logger.Debug("File: " + Path.GetFullPath(watermarkSettings.File));

            var nDocument = pdfDocument.GetNumberOfPages();

            var watermarkReader   = new PdfReader(watermarkSettings.File);
            var watermarkDocument = new PdfDocument(watermarkReader);

            var nWatermark          = watermarkDocument.GetNumberOfPages();
            var watermarkPageMapper = new WatermarkPageMapper(nWatermark, watermarkSettings);

            for (var documentPageNumber = 1; documentPageNumber <= nDocument; documentPageNumber++)
            {
                if (!watermarkPageMapper.GetWatermarkPageNumber(documentPageNumber, out var watermarkPageNumber))
                {
                    continue;
                }

                var watermarkPage = watermarkDocument.GetPage(watermarkPageNumber);
                var documentPage  = pdfDocument.GetPage(documentPageNumber);

                var watermarkPageSize     = watermarkPage.GetPageSize();
                var watermarkPageRotation = watermarkPage.GetRotation();
                var documentPageSize      = documentPage.GetPageSize();

                if (documentPage.GetRotation() == 90 || documentPage.GetRotation() == 270)
                {
                    //Turn with document page...
                    //*
                    watermarkPageRotation += 90;
                    watermarkPageRotation  = watermarkPageRotation % 360;
                    //*/
                    documentPageSize = new Rectangle(documentPageSize.GetHeight(), documentPageSize.GetWidth());
                }

                var pdfCanvas = GetPdfCanvas(documentPage, pdfDocument);

                pdfCanvas.SaveState();
                var state   = new PdfExtGState();
                var opacity = watermarkSettings.Opacity / 100.0f;
                state.SetFillOpacity(opacity);
                pdfCanvas.SetExtGState(state);

                var watermarkCopy    = watermarkPage.CopyTo(pdfDocument);
                var watermarkXObject = new PdfFormXObject(watermarkCopy);

                AddPageWithRotationAndScaling(pdfCanvas, documentPageSize, watermarkXObject, watermarkPageSize, watermarkPageRotation, watermarkSettings.FitToPage);

                pdfCanvas.RestoreState();
            }

            watermarkReader.Close();
        }
		public OggContainerSettings(IAudioSettings audio, IVideoSettings video, IWatermarkSettings watermark)
		{
			FileNameExtension = "ogv";
			Audio = audio;
			Audio.CodecName = "libvorbis"; //This is the only supported audio codec for the ogg container
			Video = video;
			Watermark = watermark;
			AllowedMetaData = new List<string>();
		}
		public WebmContainerSettings(IAudioSettings audio, IVideoSettings video, IWatermarkSettings watermark)
		{
			FileNameExtension = "webm";
			Audio = audio;
			Audio.CodecName = "libvorbis"; //This is the only supported audio codec for the webm container
			Video = video;
			Watermark = watermark;

			AllowedMetaData = new List<string>
			               	{
			               		"Title",
								"Description",
								"Langauge",
			               	};
		}
		public AviContainerSettings(IAudioSettings audio, IVideoSettings video, IWatermarkSettings watermark)
		{
			FileNameExtension = "avi";
			Audio = audio;
			Video = video;
			Watermark = watermark;

			AllowedMetaData = new List<string>()
			               	{
			               		"Title",
			               		"Artist", 
			               		"Copyright", 
			               		"Comment", 
			               		"Album", 
			               		"Genre", 
			               		"Track",
			               	};
		}
 public WatermarkPageMapper(int numBackgroundPages, IWatermarkSettings watermarkSettings)
 {
     _numBackgroundPages = numBackgroundPages;
     _watermarkSettings  = watermarkSettings;
 }