blob: 3a4415a3428fcc819bbc3575eb77e57dc2af33b6 [file] [log] [blame]
kthelgasonfb143122017-07-25 07:55:58 -07001/*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Anders Carlsson7bca8ca2018-08-30 09:30:29 +020011#import "RTCRtpFragmentationHeader+Private.h"
kthelgasonfb143122017-07-25 07:55:58 -070012
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020013#include "modules/include/module_common_types.h"
kthelgasonfb143122017-07-25 07:55:58 -070014
Anders Carlsson7bca8ca2018-08-30 09:30:29 +020015@implementation RTCRtpFragmentationHeader (Private)
kthelgasonfb143122017-07-25 07:55:58 -070016
magjed8eab09c2017-07-31 02:56:35 -070017- (instancetype)initWithNativeFragmentationHeader:
kthelgasonfb143122017-07-25 07:55:58 -070018 (const webrtc::RTPFragmentationHeader *)fragmentationHeader {
19 if (self = [super init]) {
20 if (fragmentationHeader) {
21 int count = fragmentationHeader->fragmentationVectorSize;
22 NSMutableArray *offsets = [NSMutableArray array];
23 NSMutableArray *lengths = [NSMutableArray array];
24 NSMutableArray *timeDiffs = [NSMutableArray array];
25 NSMutableArray *plTypes = [NSMutableArray array];
26 for (int i = 0; i < count; ++i) {
27 [offsets addObject:@(fragmentationHeader->fragmentationOffset[i])];
28 [lengths addObject:@(fragmentationHeader->fragmentationLength[i])];
Niels Möllerfd26ef72019-05-17 10:42:42 +020029 [timeDiffs addObject:@(0)];
30 [plTypes addObject:@(0)];
kthelgasonfb143122017-07-25 07:55:58 -070031 }
Anders Carlsson7bca8ca2018-08-30 09:30:29 +020032 self.fragmentationOffset = [offsets copy];
33 self.fragmentationLength = [lengths copy];
34 self.fragmentationTimeDiff = [timeDiffs copy];
35 self.fragmentationPlType = [plTypes copy];
kthelgasonfb143122017-07-25 07:55:58 -070036 }
37 }
38
39 return self;
40}
41
magjed8eab09c2017-07-31 02:56:35 -070042- (std::unique_ptr<webrtc::RTPFragmentationHeader>)createNativeFragmentationHeader {
kthelgasonfb143122017-07-25 07:55:58 -070043 auto fragmentationHeader =
44 std::unique_ptr<webrtc::RTPFragmentationHeader>(new webrtc::RTPFragmentationHeader);
Anders Carlsson7bca8ca2018-08-30 09:30:29 +020045 fragmentationHeader->VerifyAndAllocateFragmentationHeader(self.fragmentationOffset.count);
46 for (NSUInteger i = 0; i < self.fragmentationOffset.count; ++i) {
47 fragmentationHeader->fragmentationOffset[i] = (size_t)self.fragmentationOffset[i].unsignedIntValue;
48 fragmentationHeader->fragmentationLength[i] = (size_t)self.fragmentationLength[i].unsignedIntValue;
kthelgasonfb143122017-07-25 07:55:58 -070049 }
50
51 return fragmentationHeader;
52}
53
54@end