Commit Diff


commit - fdd78130c167098cab14bc621e8d8960de6c6b7c
commit + 035ab79449be5db836ae24e00d8bfe3317f14ea5
blob - 8509c58887b6b6618cc0ea89e76265a3768738c8
blob + 19a5986156573fbac0a351296e01edad2e9925b1
--- scte35/command.go
+++ scte35/command.go
@@ -73,8 +73,7 @@ func encodeCommand(c *Command) ([]byte, error) {
 		}
 		return b, nil
 	case SpliceInsert:
-		b := encodeInsert(c.Insert)
-		return b, nil
+		return encodeInsert(c.Insert), nil
 	case TimeSignal:
 		if c.TimeSignal == nil {
 			return nil, fmt.Errorf("cannot encode nil TimeSignal")
@@ -211,45 +210,44 @@ type Insert struct {
 func encodeInsert(ins *Insert) []byte {
 	buf := make([]byte, 4+1) // uint32 + 1 byte
 	binary.BigEndian.PutUint32(buf[:4], ins.ID)
+	buf[4] |= 0x7f // toggle reserved bits
 	if ins.Cancel {
-		buf[4] |= (1 << 7)
+		buf[4] |= (1 << 7) // toggle unreserved bit
+		return buf
 	}
-	// toggle remaining reserved 7 bits
-	buf[4] |= 0x7f
 
-	if !ins.Cancel {
-		buf = append(buf, 0x00)
-		if ins.OutOfNetwork {
-			buf[5] |= (1 << 7)
-		}
-		// assume program_splice is set;
-		// we do not support the deprecated component_count mode.
-		buf[5] |= (1 << 6)
-		if ins.Duration != nil {
-			buf[5] |= (1 << 5)
-		}
-		if ins.Immediate {
-			buf[5] |= (1 << 4)
-		}
-		if ins.idCompliance {
-			buf[5] |= (1 << 3)
-		}
-		// toggle remaining 3 reserved bits.
-		buf[5] |= 0x07
+	var flags byte
+	if ins.OutOfNetwork {
+		flags |= (1 << 7)
+	}
+	// assume program_splice is set;
+	// we do not support the deprecated component_count mode.
+	flags |= (1 << 6)
+	if ins.Duration != nil {
+		flags |= (1 << 5)
+	}
+	if ins.Immediate {
+		flags |= (1 << 4)
+	}
+	if ins.idCompliance {
+		flags |= (1 << 3)
+	}
+	// toggle remaining 3 reserved bits.
+	flags |= 0x07
+	buf = append(buf, flags)
 
-		if ins.SpliceTime != nil && !ins.Immediate {
-			b := encodeSpliceTime(*ins.SpliceTime)
-			buf = append(buf, b[:]...)
-		}
+	if ins.SpliceTime != nil && !ins.Immediate {
+		b := encodeSpliceTime(*ins.SpliceTime)
+		buf = append(buf, b[:]...)
+	}
 
-		if ins.Duration != nil {
-			b := packBreakDuration(ins.Duration)
-			buf = append(buf, b[:]...)
-		}
-		buf = append(buf, byte(ins.ProgramID>>8))
-		buf = append(buf, byte(ins.ProgramID))
-		buf = append(buf, byte(ins.AvailNum), byte(ins.AvailExpected))
+	if ins.Duration != nil {
+		b := packBreakDuration(ins.Duration)
+		buf = append(buf, b[:]...)
 	}
+	buf = append(buf, byte(ins.ProgramID>>8))
+	buf = append(buf, byte(ins.ProgramID))
+	buf = append(buf, byte(ins.AvailNum), byte(ins.AvailExpected))
 	return buf
 }